]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/turrets/turret/hk_weapon.qc
Step 5: complete
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / turrets / turret / hk_weapon.qc
index b1658923e97a80269effd93e370e729d6948defc..5a4677dcec19cb97c8cb48e1ef8e582111a73aa8 100644 (file)
@@ -58,54 +58,54 @@ void turret_hk_missile_think(entity this)
     entity e;
     float ad,edist;
 
-    self.nextthink = time + self.ticrate;
+    this.nextthink = time + this.ticrate;
 
-    //if (self.cnt < time)
+    //if (this.cnt < time)
     // turret_hk_missile_explode();
 
-    if (IS_DEAD(self.enemy))
-        self.enemy = world;
+    if (IS_DEAD(this.enemy))
+        this.enemy = world;
 
     // Pick the closest valid target.
-    if (!self.enemy)
+    if (!this.enemy)
     {
-        e = findradius(self.origin, 5000);
+        e = findradius(this.origin, 5000);
         while (e)
         {
             if (hk_is_valid_target(this, e))
             {
-                if (!self.enemy)
-                    self.enemy = e;
+                if (!this.enemy)
+                    this.enemy = e;
                 else
-                    if (vlen2(self.origin - e.origin) < vlen2(self.origin - self.enemy.origin))
-                        self.enemy = e;
+                    if (vlen2(this.origin - e.origin) < vlen2(this.origin - this.enemy.origin))
+                        this.enemy = e;
             }
             e = e.chain;
         }
     }
 
-    self.angles = vectoangles(self.velocity);
-    self.angles_x = self.angles_x * -1;
-    makevectors(self.angles);
-    self.angles_x = self.angles_x * -1;
+    this.angles = vectoangles(this.velocity);
+    this.angles_x = this.angles_x * -1;
+    makevectors(this.angles);
+    this.angles_x = this.angles_x * -1;
 
-    if (self.enemy)
+    if (this.enemy)
     {
-        edist = vlen(self.origin - self.enemy.origin);
+        edist = vlen(this.origin - this.enemy.origin);
         // Close enougth to do decent damage?
-        if ( edist <= (self.owner.shot_radius * 0.25) )
+        if ( edist <= (this.owner.shot_radius * 0.25) )
         {
-            turret_projectile_explode(self);
+            turret_projectile_explode(this);
             return;
         }
 
         // Get data on enemy position
-        pre_pos = self.enemy.origin +
-                  self.enemy.velocity *
-                  min((vlen(self.enemy.origin - self.origin) / vlen(self.velocity)),0.5);
+        pre_pos = this.enemy.origin +
+                  this.enemy.velocity *
+                  min((vlen(this.enemy.origin - this.origin) / vlen(this.velocity)),0.5);
 
-        traceline(self.origin, pre_pos,true,self.enemy);
-        ve = normalize(pre_pos - self.origin);
+        traceline(this.origin, pre_pos,true,this.enemy);
+        ve = normalize(pre_pos - this.origin);
         fe = trace_fraction;
 
     }
@@ -116,20 +116,20 @@ void turret_hk_missile_think(entity this)
         fe = 0;
     }
 
-    if ((fe != 1) || (self.enemy == world) || (edist > 1000))
+    if ((fe != 1) || (this.enemy == world) || (edist > 1000))
     {
-        myspeed = vlen(self.velocity);
+        myspeed = vlen(this.velocity);
 
         lt_for  = myspeed * 3;
         lt_seek = myspeed * 2.95;
 
         // Trace forward
-        traceline(self.origin, self.origin + v_forward * lt_for,false,self);
+        traceline(this.origin, this.origin + v_forward * lt_for,false,this);
         vf = trace_endpos;
         ff = trace_fraction;
 
         // Find angular offset
-        ad = vlen(vectoangles(normalize(self.enemy.origin - self.origin)) - self.angles);
+        ad = vlen(vectoangles(normalize(this.enemy.origin - this.origin)) - this.angles);
 
         // To close to something, Slow down!
         if ( ((ff < 0.7) || (ad > 4)) && (myspeed > (autocvar_g_turrets_unit_hk_shot_speed)) )
@@ -145,29 +145,29 @@ void turret_hk_missile_think(entity this)
         if (ff < 0.5) pt_seek = 1;
 
         // Trace left
-        traceline(self.origin, self.origin + (-1 * (v_right * pt_seek) + (v_forward * ff)) * lt_seek,false,self);
+        traceline(this.origin, this.origin + (-1 * (v_right * pt_seek) + (v_forward * ff)) * lt_seek,false,this);
         vl = trace_endpos;
         fl = trace_fraction;
 
         // Trace right
-        traceline(self.origin,  self.origin + ((v_right * pt_seek) + (v_forward * ff)) * lt_seek ,false,self);
+        traceline(this.origin,  this.origin + ((v_right * pt_seek) + (v_forward * ff)) * lt_seek ,false,this);
         vr = trace_endpos;
         fr = trace_fraction;
 
         // Trace up
-        traceline(self.origin,  self.origin + ((v_up * pt_seek) + (v_forward * ff)) * lt_seek ,false,self);
+        traceline(this.origin,  this.origin + ((v_up * pt_seek) + (v_forward * ff)) * lt_seek ,false,this);
         vu = trace_endpos;
         fu = trace_fraction;
 
         // Trace down
-        traceline(self.origin,  self.origin + (-1 * (v_up * pt_seek) + (v_forward * ff)) * lt_seek ,false,self);
+        traceline(this.origin,  this.origin + (-1 * (v_up * pt_seek) + (v_forward * ff)) * lt_seek ,false,this);
         vd = trace_endpos;
         fd = trace_fraction;
 
-        vl = normalize(vl - self.origin);
-        vr = normalize(vr - self.origin);
-        vu = normalize(vu - self.origin);
-        vd = normalize(vd - self.origin);
+        vl = normalize(vl - this.origin);
+        vr = normalize(vr - this.origin);
+        vu = normalize(vu - this.origin);
+        vd = normalize(vd - this.origin);
 
         // Panic tresh passed, find a single direction and turn as hard as we can
         if (pt_seek == 1)
@@ -183,7 +183,7 @@ void turret_hk_missile_think(entity this)
             wishdir = normalize( (vl * fl) + (vr * fr) +  (vu * fu) +  (vd * fd) );
         }
 
-        if (self.enemy)
+        if (this.enemy)
         {
             if (fe < 0.1) fe = 0.1; // Make sure we always try to move sligtly towards our target
             wishdir = (wishdir * (1 - fe)) + (ve * fe);
@@ -192,58 +192,58 @@ void turret_hk_missile_think(entity this)
     else
     {
         // Got a clear path to target, speed up fast (if not at full speed) and go straight for it.
-        myspeed = vlen(self.velocity);
+        myspeed = vlen(this.velocity);
         if (myspeed < (autocvar_g_turrets_unit_hk_shot_speed_max))
             myspeed = min(myspeed * (autocvar_g_turrets_unit_hk_shot_speed_accel2),(autocvar_g_turrets_unit_hk_shot_speed_max));
 
         wishdir = ve;
     }
 
-    if ((myspeed > (autocvar_g_turrets_unit_hk_shot_speed)) && (self.cnt > time))
+    if ((myspeed > (autocvar_g_turrets_unit_hk_shot_speed)) && (this.cnt > time))
         myspeed = min(myspeed * (autocvar_g_turrets_unit_hk_shot_speed_accel2),(autocvar_g_turrets_unit_hk_shot_speed_max));
 
     // Ranoutagazfish?
-    if (self.cnt < time)
+    if (this.cnt < time)
     {
-        self.cnt = time + 0.25;
-        self.nextthink = 0;
-        self.movetype           = MOVETYPE_BOUNCE;
+        this.cnt = time + 0.25;
+        this.nextthink = 0;
+        this.movetype           = MOVETYPE_BOUNCE;
         return;
     }
 
     // Calculate new heading
-    olddir = normalize(self.velocity);
+    olddir = normalize(this.velocity);
     newdir = normalize(olddir + wishdir * (autocvar_g_turrets_unit_hk_shot_speed_turnrate));
 
     // Set heading & speed
-    self.velocity = newdir * myspeed;
+    this.velocity = newdir * myspeed;
 
     // Align model with new heading
-    self.angles = vectoangles(self.velocity);
+    this.angles = vectoangles(this.velocity);
 
 
 #ifdef TURRET_DEBUG_HK
-    //if(self.atime < time) {
+    //if(this.atime < time) {
     if ((fe <= 0.99)||(edist > 1000))
     {
-        te_lightning2(world,self.origin, self.origin + vr * lt_seek);
-        te_lightning2(world,self.origin, self.origin + vl * lt_seek);
-        te_lightning2(world,self.origin, self.origin + vu * lt_seek);
-        te_lightning2(world,self.origin, self.origin + vd * lt_seek);
-        te_lightning2(world,self.origin, vf);
+        te_lightning2(world,this.origin, this.origin + vr * lt_seek);
+        te_lightning2(world,this.origin, this.origin + vl * lt_seek);
+        te_lightning2(world,this.origin, this.origin + vu * lt_seek);
+        te_lightning2(world,this.origin, this.origin + vd * lt_seek);
+        te_lightning2(world,this.origin, vf);
     }
     else
     {
-        te_lightning2(world,self.origin, self.enemy.origin);
+        te_lightning2(world,this.origin, this.enemy.origin);
     }
     bprint("Speed: ", ftos(rint(myspeed)), "\n");
     bprint("Trace to solid: ", ftos(rint(ff * 100)), "%\n");
     bprint("Trace to target:", ftos(rint(fe * 100)), "%\n");
-    self.atime = time + 0.2;
+    this.atime = time + 0.2;
     //}
 #endif
 
-    UpdateCSQCProjectile(self);
+    UpdateCSQCProjectile(this);
 }
 
 bool hk_is_valid_target(entity this, entity e_target)