]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/vehicles/vehicle/spiderbot_weapons.qc
VehicleSpawn --> VehicleInit
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / vehicles / vehicle / spiderbot_weapons.qc
index 1c808b13ecee4f11c2acf65cf9a80f0a8905162b..5f7a2c31c8a928cbbc5efec1d99e869a0c01a6fc 100644 (file)
@@ -14,55 +14,52 @@ void spiderbot_rocket_unguided(entity this)
 {
     vector newdir, olddir;
 
-    self.nextthink  = time;
+    this.nextthink  = time;
 
-    olddir = normalize(self.velocity);
-    newdir = normalize(self.pos1 - self.origin) + randomvec() * autocvar_g_vehicle_spiderbot_rocket_noise;
-    self.velocity = normalize(olddir + newdir * autocvar_g_vehicle_spiderbot_rocket_turnrate) * autocvar_g_vehicle_spiderbot_rocket_speed;
+    olddir = normalize(this.velocity);
+    newdir = normalize(this.pos1 - this.origin) + randomvec() * autocvar_g_vehicle_spiderbot_rocket_noise;
+    this.velocity = normalize(olddir + newdir * autocvar_g_vehicle_spiderbot_rocket_turnrate) * autocvar_g_vehicle_spiderbot_rocket_speed;
 
-    UpdateCSQCProjectile(self);
+    UpdateCSQCProjectile(this);
 
-    if (IS_DEAD(self.owner) || self.cnt < time || vdist(self.pos1 - self.origin, <, 16))
-        self.use(self, NULL, NULL);
+    if (IS_DEAD(this.owner) || this.cnt < time || vdist(this.pos1 - this.origin, <, 16))
+        this.use(this, NULL, NULL);
 }
 
 void spiderbot_rocket_guided(entity this)
 {
     vector newdir, olddir;
 
-    self.nextthink  = time;
+    this.nextthink  = time;
 
-    if(!self.realowner.vehicle)
-        setthink(self, spiderbot_rocket_unguided);
+    if(!this.realowner.vehicle)
+        setthink(this, spiderbot_rocket_unguided);
 
-    crosshair_trace(self.realowner);
-    olddir = normalize(self.velocity);
-    newdir = normalize(trace_endpos - self.origin) + randomvec() * autocvar_g_vehicle_spiderbot_rocket_noise;
-    self.velocity = normalize(olddir + newdir * autocvar_g_vehicle_spiderbot_rocket_turnrate) * autocvar_g_vehicle_spiderbot_rocket_speed;
+    crosshair_trace(this.realowner);
+    olddir = normalize(this.velocity);
+    newdir = normalize(trace_endpos - this.origin) + randomvec() * autocvar_g_vehicle_spiderbot_rocket_noise;
+    this.velocity = normalize(olddir + newdir * autocvar_g_vehicle_spiderbot_rocket_turnrate) * autocvar_g_vehicle_spiderbot_rocket_speed;
 
-    UpdateCSQCProjectile(self);
+    UpdateCSQCProjectile(this);
 
-    if (IS_DEAD(self.owner) || self.cnt < time)
-        self.use(self, NULL, NULL);
+    if (IS_DEAD(this.owner) || this.cnt < time)
+        this.use(this, NULL, NULL);
 }
 
 void spiderbot_guide_release(entity this)
 {
-    entity rkt;
-    rkt = findchainentity(realowner, this.owner);
-    if(!rkt)
-        return;
-
-    crosshair_trace(this.owner);
-    while(rkt)
+    bool donetrace = false;
+    IL_EACH(g_projectiles, it.realowner == this.owner && getthink(it) == spiderbot_rocket_guided,
     {
-        if(getthink(rkt) == spiderbot_rocket_guided)
+        if(!donetrace) // something exists, let's trace!
         {
-            rkt.pos1 = trace_endpos;
-            setthink(rkt, spiderbot_rocket_unguided);
+            donetrace = true;
+            crosshair_trace(this.owner);
         }
-        rkt = rkt.chain;
-    }
+
+        it.pos1 = trace_endpos;
+        setthink(it, spiderbot_rocket_unguided);
+    });
 }
 
 float spiberbot_calcartillery_flighttime;
@@ -140,9 +137,9 @@ vector spiberbot_calcartillery(vector org, vector tgt, float ht)
 }
 
 void spiderbot_rocket_do(entity this)
-{;
+{
     vector v;
-    entity rocket = world;
+    entity rocket = NULL;
 
     if (this.wait != -10)
     {
@@ -196,7 +193,7 @@ void spiderbot_rocket_do(entity this)
             float _dist = (random() * autocvar_g_vehicle_spiderbot_rocket_radius) + vlen(v - trace_endpos);
             _dist -= (random() * autocvar_g_vehicle_spiderbot_rocket_radius) ;
             rocket.nextthink  = time + (_dist / autocvar_g_vehicle_spiderbot_rocket_speed);
-            setthink(rocket, vehicles_projectile_explode);
+            setthink(rocket, vehicles_projectile_explode_think);
 
             if(PHYS_INPUT_BUTTON_ATCK2(this.owner) && this.tur_head.frame == 1)
                 this.wait = -10;
@@ -232,7 +229,7 @@ void spiderbot_rocket_do(entity this)
             float h2 = 0.75 * vlen(rocket.pos1 - v);
 
             rocket.velocity  = spiberbot_calcartillery(v, rocket.pos1, ((h1 < h2) ? h1 : h2));
-            rocket.movetype  = MOVETYPE_TOSS;
+            set_movetype(rocket, MOVETYPE_TOSS);
             rocket.gravity   = 1;
             //setthink(rocket, spiderbot_rocket_artillery);
         break;