r4584 - in trunk/data/qcsrc/server/tturrets: include system units

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Thu Oct 2 13:08:31 EDT 2008


Author: tzork
Date: 2008-10-02 13:08:31 -0400 (Thu, 02 Oct 2008)
New Revision: 4584

Modified:
   trunk/data/qcsrc/server/tturrets/include/turret_tturrets_early.qh
   trunk/data/qcsrc/server/tturrets/system/turret_system_aimprocs.qc
   trunk/data/qcsrc/server/tturrets/system/turret_system_damage.qc
   trunk/data/qcsrc/server/tturrets/system/turret_system_main.qc
   trunk/data/qcsrc/server/tturrets/system/turret_system_misc.qc
   trunk/data/qcsrc/server/tturrets/system/turret_system_scoreprocs.qc
   trunk/data/qcsrc/server/tturrets/units/turret_unit_flac.qc
   trunk/data/qcsrc/server/tturrets/units/turret_unit_hellion.qc
   trunk/data/qcsrc/server/tturrets/units/turret_unit_hk.qc
   trunk/data/qcsrc/server/tturrets/units/turret_unit_machinegun.qc
   trunk/data/qcsrc/server/tturrets/units/turret_unit_mlrs.qc
   trunk/data/qcsrc/server/tturrets/units/turret_unit_phaser.qc
   trunk/data/qcsrc/server/tturrets/units/turret_unit_plasma.qc
Log:
Turret updates. 

Modified: trunk/data/qcsrc/server/tturrets/include/turret_tturrets_early.qh
===================================================================
--- trunk/data/qcsrc/server/tturrets/include/turret_tturrets_early.qh	2008-10-02 16:11:00 UTC (rev 4583)
+++ trunk/data/qcsrc/server/tturrets/include/turret_tturrets_early.qh	2008-10-02 17:08:31 UTC (rev 4584)
@@ -1,5 +1,5 @@
 // Comment out below to skip turrets
-//#define TTURRETS_ENABLED
+#define TTURRETS_ENABLED
 
 #ifdef TTURRETS_ENABLED
 
@@ -37,6 +37,8 @@
 #define TFL_AIM_NO                  512
 /// Go for ground, not direct hit
 #define TFL_AIM_GROUND              2
+/// Go for ground, not direct hit if target is on ground too
+#define TFL_AIM_GROUND2              1024
 /// Use balistic aim (not implemented)
 #define TFL_AIM_BALISTIC            4
 /// Try to predict target movement

Modified: trunk/data/qcsrc/server/tturrets/system/turret_system_aimprocs.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/system/turret_system_aimprocs.qc	2008-10-02 16:11:00 UTC (rev 4583)
+++ trunk/data/qcsrc/server/tturrets/system/turret_system_aimprocs.qc	2008-10-02 17:08:31 UTC (rev 4584)
@@ -81,7 +81,8 @@
 
 
     // This turret should hit the ground neer a target rather the do a direct hit
-    if (self.aim_flags & TFL_AIM_GROUND)
+    if ( (self.aim_flags & TFL_AIM_GROUND) ||
+         ((self.aim_flags & TFL_AIM_GROUND2) && (self.enemy.flags & FL_ONGROUND)) )
     {
         traceline(pre_pos + '0 0 512',pre_pos - '0 0 2048',1,self.enemy);
         pre_pos = trace_endpos;

Modified: trunk/data/qcsrc/server/tturrets/system/turret_system_damage.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/system/turret_system_damage.qc	2008-10-02 16:11:00 UTC (rev 4583)
+++ trunk/data/qcsrc/server/tturrets/system/turret_system_damage.qc	2008-10-02 17:08:31 UTC (rev 4584)
@@ -142,7 +142,7 @@
     self.deadflag = DEAD_DEAD;
     self.tur_head.deadflag = self.deadflag;
 
-    sound (self, CHAN_BODY, "weapons/rocket_impact.wav", 1, ATTN_NORM);
+    sound (self, CHAN_PLAYER, "weapons/rocket_impact.wav", 1, ATTN_NORM);
     org2 = self.origin + '0 0 40';
 
 // Explotion grafix
@@ -191,7 +191,7 @@
 
 
 // Go boom
-    RadiusDamage (self,self, min(self.ammo,50),min(self.ammo,50) * 0.25,250,world,min(self.ammo,50)*5,IT_ROCKET_LAUNCHER);
+    RadiusDamage (self,self, min(self.ammo,50),min(self.ammo,50) * 0.25,250,world,min(self.ammo,50)*5,0);
 
 // Setup respawn
     self.nextthink      = time + self.respawntime;
@@ -265,6 +265,7 @@
         if (self.team == attacker.team)
         {
             sprint(attacker,"Turret: Im on your team!\n");
+            return;
         } else {
 			/*
             // This will get enoying fast...

Modified: trunk/data/qcsrc/server/tturrets/system/turret_system_main.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/system/turret_system_main.qc	2008-10-02 16:11:00 UTC (rev 4583)
+++ trunk/data/qcsrc/server/tturrets/system/turret_system_main.qc	2008-10-02 17:08:31 UTC (rev 4584)
@@ -1,6 +1,6 @@
 #define cvar_base "g_turrets_unit_"
 
-.float tur_lastscore;
+//.float tur_lastscore;
 .string cvar_basename;
 
 string cvar_gets(string s_base,string s_add)
@@ -143,9 +143,11 @@
 void turret_stdproc_track()
 {
     vector wish_angle;  // This is where we'd need to be
+
     vector real_angle;  // This is where we can go
     float f_tmp;
 
+
     if (self.track_flags == TFL_TRACK_NO)
         return;
 
@@ -158,26 +160,32 @@
     }
     else
     {
+        // Find the direction
         if (self.turrcaps_flags & TFL_TURRCAPS_LINKED)
-            wish_angle = normalize(self.tur_aimpos - self.origin); // Find the direction
+            wish_angle = normalize(self.tur_aimpos - self.origin);
         else
-            wish_angle = normalize(self.tur_aimpos - self.tur_head.origin); // Find the direction
+            wish_angle = normalize(self.tur_aimpos - self.tur_head.origin);
 
-        wish_angle = vectoangles(wish_angle);                           // And make a angle
+        wish_angle = vectoangles(wish_angle); // And make a angle
     }
 
     // Find the diffrence between where we currently aim and where we want to aim
     if (self.turrcaps_flags & TFL_TURRCAPS_LINKED)
-        real_angle = wish_angle - (self.tur_head.angles + self.angles);
+        real_angle = wish_angle - (self.angles + self.tur_head.angles);
     else
-        real_angle = wish_angle - self.tur_head.angles;
+    {
+        //if(vlen(wish_angle - self.tur_head.angles) > vlen(self.tur_head.angles - wish_angle))
+            real_angle = wish_angle - self.tur_head.angles;
+        //else
+        //    real_angle =  self.tur_head.angles - wish_angle;
+    }
 
     // Constrain it within +/- 360
-    if (real_angle_x < 0) real_angle_x += 360;
-    if (real_angle_x > 180) real_angle_x -= 360;
+    if (real_angle_x <= 0) real_angle_x += 360;
+    if (real_angle_x >= 180) real_angle_x -= 360;
 
-    if (real_angle_y < 0) real_angle_y += 360;
-    if (real_angle_y > 180) real_angle_y -= 360;
+    //if (real_angle_y <= 0) real_angle_y += 360;
+    if (real_angle_y >= 180) real_angle_y -= 360;
 
 
     if (self.track_type == TFL_TRACKTYPE_STEPMOTOR)
@@ -227,8 +235,7 @@
             self.tur_head.angles_x = self.aim_maxpitch;
             self.tur_head.avelocity_x = 0;
         }
-
-        if (self.tur_head.angles_x < (self.aim_maxpitch * -1))
+        else if (self.tur_head.angles_x < (self.aim_maxpitch * -1))
         {
             self.tur_head.angles_x = (self.aim_maxpitch * -1);
             self.tur_head.avelocity_x = 0;
@@ -237,18 +244,18 @@
 
     // Limit rot
     if (self.track_flags & TFL_TRACK_ROT)
+    {
         if (self.tur_head.angles_y > self.aim_maxrot)
         {
             self.tur_head.angles_y = self.aim_maxrot;
             self.tur_head.avelocity_y = 0;
         }
-
-    if (self.track_flags & TFL_TRACK_ROT)
-        if (self.tur_head.angles_y < (self.aim_maxrot * -1))
+        else if (self.tur_head.angles_y < (self.aim_maxrot * -1))
         {
             self.tur_head.angles_y = (self.aim_maxrot * -1);
             self.tur_head.avelocity_y = 0;
         }
+    }
 
 
 }
@@ -398,7 +405,6 @@
 
             if (e_turret.team != e_target.owner.team)
                 return -8.5;
-
         }
         else
         {
@@ -490,7 +496,7 @@
         e = e.chain;
     }
 
-    self.tur_lastscore = m_score;
+//    self.tur_lastscore = m_score;
 
     //if (self.enemy != e_enemy)
     //self.volly_counter = 0;
@@ -578,10 +584,10 @@
         else
         {
             // turret_do_updates(self);
-            if (turret_validate_target(self,self.enemy,self.target_validate_flags) <= 0)// || (self.cnt < time))
+            if ((turret_validate_target(self,self.enemy,self.target_validate_flags) <= 0) || (self.cnt < time))
             {
                 self.enemy = turret_select_target();
-                self.cnt = time + self.ticrate * 5;
+                self.cnt = time + self.ticrate * 3;
             }
         }
 
@@ -597,7 +603,7 @@
             // And bail.
             return;
         }
-
+        // te_lightning1(world,self.origin,self.enemy.origin);
         // Update
         turret_do_updates(self);
 
@@ -802,7 +808,7 @@
 
     if (self.track_type != TFL_TRACKTYPE_STEPMOTOR)
     {
-        // Fluid / ineria mode. Looks mutch nicer, bit experimental &
+        // Fluid / Ineria mode. Looks mutch nicer, bit experimental &
         // Can inmapt aim preformance alot.
         // needs a bit diffrent aimspeed
         if (!self.aim_speed) self.aim_speed = 180;

Modified: trunk/data/qcsrc/server/tturrets/system/turret_system_misc.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/system/turret_system_misc.qc	2008-10-02 16:11:00 UTC (rev 4583)
+++ trunk/data/qcsrc/server/tturrets/system/turret_system_misc.qc	2008-10-02 17:08:31 UTC (rev 4584)
@@ -37,7 +37,7 @@
     setmodel(e, "models/turrets/c512.md3"); // precision set above
     e.scale = (f_size/512);
     setsize(e, '0 0 0', '0 0 0');
-    ///setattachment(e,onwho,"");
+    //setattachment(e,onwho,"");
     setorigin(e,onwho.origin + '0 0 1');
     e.alpha = 0.15;
     e.movetype = MOVETYPE_FLY;

Modified: trunk/data/qcsrc/server/tturrets/system/turret_system_scoreprocs.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/system/turret_system_scoreprocs.qc	2008-10-02 16:11:00 UTC (rev 4583)
+++ trunk/data/qcsrc/server/tturrets/system/turret_system_scoreprocs.qc	2008-10-02 17:08:31 UTC (rev 4584)
@@ -74,7 +74,8 @@
     a_score = 1 - aim_delay;
     */
 
-    a_score = 1 - (tvt_thadf / max(e_turret.aim_maxrot,e_turret.aim_maxpitch));
+    //a_score = 1 - (tvt_thadf / max(e_turret.aim_maxrot,e_turret.aim_maxpitch));
+    a_score = 1 - tvt_thadf / e_turret.aim_maxrot;
 
     if ((e_turret.target_select_missilebias > 0) && (e_target.flags & FL_PROJECTILE))
         m_score = 1;

Modified: trunk/data/qcsrc/server/tturrets/units/turret_unit_flac.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/turret_unit_flac.qc	2008-10-02 16:11:00 UTC (rev 4583)
+++ trunk/data/qcsrc/server/tturrets/units/turret_unit_flac.qc	2008-10-02 17:08:31 UTC (rev 4584)
@@ -9,7 +9,7 @@
 
     turret_tag_fire_update();
 
-    sound (self, CHAN_BODY, "weapons/hagar_fire.wav", 1, ATTN_NORM);
+    sound (self, CHAN_WEAPON, "weapons/hagar_fire.wav", 1, ATTN_NORM);
     proj = spawn ();
     setorigin(proj, self.tur_shotorg_updated);
     setmodel(proj, "models/turrets/pd_proj.md3");
@@ -46,11 +46,11 @@
 
     b = crandom();
     if (b<-0.7)
-        sound (self, CHAN_BODY, "weapons/hagexp1.wav", 1, ATTN_NORM);
+        sound (self, CHAN_PROJECTILE, "weapons/hagexp1.wav", 1, ATTN_NORM);
     else if (b<0.4)
-        sound (self, CHAN_BODY, "weapons/hagexp2.wav", 1, ATTN_NORM);
+        sound (self, CHAN_PROJECTILE, "weapons/hagexp2.wav", 1, ATTN_NORM);
     else if (b<1)
-        sound (self, CHAN_BODY, "weapons/hagexp3.wav", 1, ATTN_NORM);
+        sound (self, CHAN_PROJECTILE, "weapons/hagexp3.wav", 1, ATTN_NORM);
 
 
     self.event_damage = SUB_Null;

Modified: trunk/data/qcsrc/server/tturrets/units/turret_unit_hellion.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/turret_unit_hellion.qc	2008-10-02 16:11:00 UTC (rev 4583)
+++ trunk/data/qcsrc/server/tturrets/units/turret_unit_hellion.qc	2008-10-02 17:08:31 UTC (rev 4584)
@@ -27,11 +27,11 @@
 {
     local entity missile;
 
-    sound (self, CHAN_BODY, "weapons/hagar_fire.wav", 1, ATTN_NORM);
+    sound (self, CHAN_WEAPON, "weapons/hagar_fire.wav", 1, ATTN_NORM);
 
     missile = spawn ();
     setorigin(missile, self.tur_shotorg_updated);
-    sound (missile, CHAN_BODY, "weapons/rocket_fly.wav", 0.4, ATTN_NORM);
+    sound (missile, CHAN_VOICE, "weapons/rocket_fly.wav", 0.4, ATTN_NORM);
     setmodel (missile, "models/turrets/mlrs_rocket.md3"); // precision set below
     setsize (missile, '-3 -3 -3', '3 3 3'); // give it some size so it can be shot
 
@@ -147,7 +147,7 @@
     vector org2;
     float d;
 
-    sound (self, CHAN_BODY, "weapons/rocket_impact.wav", 1, ATTN_NORM);
+    sound (self, CHAN_PROJECTILE, "weapons/rocket_impact.wav", 1, ATTN_NORM);
     org2 = findbetterlocation (self.origin, 16);
 
     // LordHavoc: TE_TEI_BIGEXPLOSION

Modified: trunk/data/qcsrc/server/tturrets/units/turret_unit_hk.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/turret_unit_hk.qc	2008-10-02 16:11:00 UTC (rev 4583)
+++ trunk/data/qcsrc/server/tturrets/units/turret_unit_hk.qc	2008-10-02 17:08:31 UTC (rev 4584)
@@ -47,11 +47,14 @@
         return 0;
 
     // player
-    if ((e_target.flags & FL_CLIENT) && (self.owner.target_select_playerbias < 0))
-        return 0;
+    if (e_target.flags & FL_CLIENT)
+    {
+        if(self.owner.target_select_playerbias < 0)
+            return 0;
 
-    if ((e_target.flags & FL_CLIENT) && (e_target.deadflag != DEAD_NO))
-        return 0;
+        if (e_target.deadflag != DEAD_NO)
+            return 0;
+    }
 
     // Missile
     if ((e_target.flags & FL_PROJECTILE) && (self.owner.target_select_missilebias < 0))
@@ -82,13 +85,13 @@
     local entity missile;
     //local entity flash2;
 
-    sound (self, CHAN_BODY, "weapons/rocket_fire.wav", 1, ATTN_NORM);
+    sound (self, CHAN_WEAPON, "weapons/rocket_fire.wav", 1, ATTN_NORM);
 
     missile                    = spawn ();
     missile.solid            = SOLID_BBOX;
     setmodel (missile, "models/turrets/hunter2.md3"); // precision set below
     setsize (missile, '-3 -3 -3', '3 3 3'); // give it some size so it can be shot
-    sound    (missile, CHAN_BODY, "weapons/rocket_fly.wav", 0.4, ATTN_NORM);
+    sound    (missile, CHAN_VOICE, "weapons/rocket_fly.wav", 0.4, ATTN_NORM);
     setorigin(missile, self.tur_shotorg_updated);
 
     missile.scale            = 1;
@@ -111,6 +114,7 @@
     missile.enemy            = self.enemy;
     missile.team             = self.team;
     missile.cnt              = time + 30;
+    missile.ticrate          = max(cvar("sys_ticrate"),0.05);
 
     te_explosion (missile.origin);
 
@@ -151,8 +155,7 @@
     entity e;
     float ad;
 
-    // 25fps
-    self.nextthink = time + 0.04;
+    self.nextthink = time + self.ticrate;
 
     //if (self.cnt < time)
     //    turret_hk_missile_explode();
@@ -185,6 +188,13 @@
 
     if (self.enemy)
     {
+        // Close enougth to do decent damage?
+        if ( vlen(self.origin - self.enemy.origin) <= (self.owner.shot_radius * 0.25) )
+        {
+            turret_hk_missile_explode();
+            return;
+        }
+
         // Get data on enemy position
         pre_pos = self.enemy.origin +
                   self.enemy.velocity *
@@ -194,12 +204,6 @@
         ve = normalize(pre_pos - self.origin);
         fe = trace_fraction;
 
-        // Close enougth to do decent damage?
-        if ( vlen(self.origin - self.enemy.origin) <= (self.owner.shot_radius * 0.25) )
-        {
-            turret_hk_missile_explode();
-            return;
-        }
     }
     else
     {
@@ -301,7 +305,7 @@
         self.cnt = time + 0.25;
         self.nextthink = 0;
         self.movetype         = MOVETYPE_BOUNCE;
-        sound    (self, CHAN_BODY, "", 0.4, ATTN_NORM);
+        sound    (self, CHAN_VOICE, "", 0.4, ATTN_NORM);
         return;
     }
 
@@ -352,7 +356,7 @@
         return;
 
     //vector	org2;
-    sound (self, CHAN_BODY, "weapons/rocket_impact.wav", 1, ATTN_NORM);
+    sound (self, CHAN_PROJECTILE, "weapons/rocket_impact.wav", 1, ATTN_NORM);
     org2 = findbetterlocation (self.origin, 16);
 
     // LordHavoc: TE_TEI_BIGEXPLOSION

Modified: trunk/data/qcsrc/server/tturrets/units/turret_unit_machinegun.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/turret_unit_machinegun.qc	2008-10-02 16:11:00 UTC (rev 4583)
+++ trunk/data/qcsrc/server/tturrets/units/turret_unit_machinegun.qc	2008-10-02 17:08:31 UTC (rev 4584)
@@ -7,7 +7,7 @@
 {
 
     entity flash;
-    sound (self, CHAN_BODY, "weapons/uzi_fire.wav", 1, ATTN_NORM);
+    sound (self, CHAN_WEAPON, "weapons/uzi_fire.wav", 1, ATTN_NORM);
     fireBullet (self.tur_shotorg_updated, self.tur_shotdir_updated,self.shot_spread, self.shot_dmg, self.shot_force, DEATH_TURRET, FALSE);
 
     te_smallflash(self.tur_shotorg_updated);

Modified: trunk/data/qcsrc/server/tturrets/units/turret_unit_mlrs.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/turret_unit_mlrs.qc	2008-10-02 16:11:00 UTC (rev 4583)
+++ trunk/data/qcsrc/server/tturrets/units/turret_unit_mlrs.qc	2008-10-02 17:08:31 UTC (rev 4584)
@@ -16,12 +16,12 @@
 
     turret_tag_fire_update();
 
-    sound (self, CHAN_BODY, "weapons/rocket_fire.wav", 1, ATTN_NORM);
+    sound (self, CHAN_WEAPON, "weapons/rocket_fire.wav", 1, ATTN_NORM);
 
     missile                    = spawn ();
     setmodel (missile, "models/turrets/rocket.md3"); // precision set below
     setsize (missile, '-3 -3 -3', '3 3 3'); // give it some size so it can be shot
-    sound (missile, CHAN_BODY, "weapons/rocket_fly.wav", 0.4, ATTN_NORM);
+    sound (missile, CHAN_VOICE, "weapons/rocket_fly.wav", 0.4, ATTN_NORM);
     setorigin(missile, self.tur_shotorg_updated);
     missile.classname          = "mlrs_missile";
     missile.owner              = self;
@@ -52,7 +52,7 @@
     vector org2;
 
     //vector	org2;
-    sound (self, CHAN_BODY, "weapons/rocket_impact.wav", 1, ATTN_NORM);
+    sound (self, CHAN_PROJECTILE, "weapons/rocket_impact.wav", 1, ATTN_NORM);
     org2 = findbetterlocation (self.origin, 16);
     pointparticles(particleeffectnum("rocket_explode"), org2, '0 0 0', 1);
 

Modified: trunk/data/qcsrc/server/tturrets/units/turret_unit_phaser.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/turret_unit_phaser.qc	2008-10-02 16:11:00 UTC (rev 4583)
+++ trunk/data/qcsrc/server/tturrets/units/turret_unit_phaser.qc	2008-10-02 17:08:31 UTC (rev 4584)
@@ -40,7 +40,7 @@
         self.owner.attack_finished = time + self.owner.shot_refire;
         self.owner.fireflag = 2;
         self.owner.tur_head.frame = 10;
-        sound (self, CHAN_BODY, "", 1, ATTN_NORM);
+        sound (self, CHAN_PROJECTILE, "", 1, ATTN_NORM);
         remove(self);
         return;
     }
@@ -50,7 +50,7 @@
     if(time - self.shot_spread > 0)
     {
             self.shot_spread = time + 2;
-            sound (self, CHAN_BODY, "turrets/phaser.ogg", 1, ATTN_NORM);
+            sound (self, CHAN_VOICE, "turrets/phaser.ogg", 1, ATTN_NORM);
     }
 
 
@@ -93,7 +93,7 @@
     beam.enemy = self.enemy;
 	beam.bot_dodge = TRUE;
 	beam.bot_dodgerating = beam.shot_dmg;
-	sound (beam, CHAN_BODY, "turrets/phaser.ogg", 1, ATTN_NORM);
+	sound (beam, CHAN_VOICE, "turrets/phaser.ogg", 1, ATTN_NORM);
     self.fireflag = 1;
 
     beam.attack_finished = self.attack_finished;
@@ -101,7 +101,7 @@
 
     setattachment(beam,self.tur_head,"tag_fire");
 
-    PointSound (trace_endpos, "weapons/neximpact.wav", 1, ATTN_NORM);
+    soundat (self, trace_endpos, CHAN_PROJECTILE, "weapons/neximpact.wav", VOL_BASE, ATTN_NORM);
 
     if(self.tur_head.frame == 0)
         self.tur_head.frame = 1;

Modified: trunk/data/qcsrc/server/tturrets/units/turret_unit_plasma.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/turret_unit_plasma.qc	2008-10-02 16:11:00 UTC (rev 4583)
+++ trunk/data/qcsrc/server/tturrets/units/turret_unit_plasma.qc	2008-10-02 17:08:31 UTC (rev 4584)
@@ -28,7 +28,7 @@
 
     turret_tag_fire_update();
 
-    sound (self, CHAN_BODY, "weapons/hagar_fire.wav", 1, ATTN_NORM);
+    sound (self, CHAN_WEAPON, "weapons/hagar_fire.wav", 1, ATTN_NORM);
     proj                    = spawn ();
     setorigin(proj, self.tur_shotorg_updated);
     setsize(proj, '0 0 0', '0 0 0');
@@ -89,7 +89,7 @@
 #else
     RadiusDamage (self, self.owner, self.owner.shot_dmg, 0, self.owner.shot_radius, world, self.owner.shot_force, DEATH_TURRET);
 #endif
-    sound (self, CHAN_BODY, "weapons/electro_impact.wav", 1, ATTN_NORM);
+    sound (self, CHAN_PROJECTILE, "weapons/electro_impact.wav", 1, ATTN_NORM);
 
     remove (self);
 }
@@ -102,7 +102,7 @@
     precache_model ("models/turrets/base.md3");
 
     self.ammo_flags = TFL_AMMO_ENERGY | TFL_AMMO_RECHARGE | TFL_AMMO_RECIVE;
-    self.aim_flags = TFL_AIM_LEAD | TFL_AIM_SHOTTIMECOMPENSATE | TFL_AIM_ZEASE;
+    self.aim_flags = TFL_AIM_LEAD | TFL_AIM_SHOTTIMECOMPENSATE | TFL_AIM_ZEASE | TFL_AIM_GROUND2;
 
     if (turret_stdproc_init("plasma_std") == 0)
     {
@@ -142,6 +142,12 @@
     setmodel(self,"models/turrets/base.md3");
     setmodel(self.tur_head,"models/turrets/plasmad.md3");
 
+	setorigin(self, self.origin);
+	setorigin(self.tur_head, self.tur_head.origin);
+
+	setsize(self, self.mins, self.maxs);
+	setsize(self.tur_head, self.tur_head.mins, self.tur_head.maxs);
+
     if(!turret_tag_setup(0))
         dprint("Warning: Turret ",self.classname, " faild to initialize md3 tags\n");
 




More information about the nexuiz-commits mailing list