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

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Fri Oct 3 07:33:38 EDT 2008


Author: tzork
Date: 2008-10-03 07:33:37 -0400 (Fri, 03 Oct 2008)
New Revision: 4603

Modified:
   trunk/data/qcsrc/server/assault.qc
   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/units/turret_unit_flac.qc
   trunk/data/qcsrc/server/tturrets/units/turret_unit_fusionreactor.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
   trunk/data/qcsrc/server/tturrets/units/turret_unit_targettrigger.qc
   trunk/data/qcsrc/server/tturrets/units/turret_unit_tessla.qc
Log:
Turret updates #2 sound channels usage and some optimizations.

Modified: trunk/data/qcsrc/server/assault.qc
===================================================================
--- trunk/data/qcsrc/server/assault.qc	2008-10-03 10:33:57 UTC (rev 4602)
+++ trunk/data/qcsrc/server/assault.qc	2008-10-03 11:33:37 UTC (rev 4603)
@@ -322,7 +322,8 @@
         self = ent;
 
         // Dubbles as teamchange
-        ent.turret_spawnfunc();
+        turret_stdproc_respawn();
+        //ent.turret_spawnfunc();
 
 		ent = find(ent, classname, "turret_main");
 	}

Modified: trunk/data/qcsrc/server/tturrets/include/turret_tturrets_early.qh
===================================================================
--- trunk/data/qcsrc/server/tturrets/include/turret_tturrets_early.qh	2008-10-03 10:33:57 UTC (rev 4602)
+++ trunk/data/qcsrc/server/tturrets/include/turret_tturrets_early.qh	2008-10-03 11:33:37 UTC (rev 4603)
@@ -3,7 +3,7 @@
 
 #ifdef TTURRETS_ENABLED
 
-#message "with tZork turrets rc1"
+#message "with tZork turrets rc2"
 
 vector real_origin(entity ent);
 
@@ -104,7 +104,7 @@
 #define TFL_FIRECHECK_OWM_AMMO   1024
 /// Others ammo need to be < others .ammo_max
 #define TFL_FIRECHECK_OTHER_AMMO 2048
-/// Check own .attack_finished vs time
+/// Check own .attack_finished_single vs time
 #define TFL_FIRECHECK_REFIRE     4096
 
 /// How shooting is done
@@ -170,7 +170,7 @@
 #define  TFL_AMMO_ROCKETS  8
 /// Regenerates ammo on its own
 #define  TFL_AMMO_RECHARGE 16
- /// Can recive ammo from others
+/// Can recive ammo from others
 #define  TFL_AMMO_RECIVE   32
 
 /// How incomming damage is handeld
@@ -233,15 +233,13 @@
 .float      tur_dist_toaimpos;
 /// Decresment counter form .shot_volly to 0.
 .float      volly_counter;
-/// Pointer to master when in slave mode
-.entity     emaster;            // A slave?
 
 /*
 * Projectile/missile. its up to the individual turret implementation to
 ** deal the damage, blow upp the missile or whatever.
 */
 /// Track then refireing is possible
-.float attack_finished;
+//.float attack_finished; = attack_finished_single
 /// Shoot this often
 .float shot_refire;
 /// Shots travel this fast, when appliable
@@ -290,7 +288,7 @@
 /// Maximum offset between impact and aim spot to fire
 .float aim_firetolerance_dist;
 /// Maximum angular offset between head and aimspot to fire
-.float aim_firetolerance_angle;
+//.float aim_firetolerance_angle;
 /// How fast can i rotate/pitch (per second in stepmotor mode, base force in smooth modes)
 .float aim_speed;
 /// cant aim higher/lower then this
@@ -306,16 +304,7 @@
 /// Max amount of ammo i can hold
 .float ammo_max;
 
-// Am i enslaved?
-// Slave turrets always target the same target as their master.
-// However; Depending on their individual capabiliteis, they may not fire at the same time
-// or at all. (slaves ranges, rotaion limits, ammo etc still apply)
 
-/// Set to another turrets .master_nameof to enslave me
-.string master_name;
-/// Set another turrets .master_name to this to enslave it
-.string master_nameof;
-
 // Uncomment below to enable various debug output.
 //#define TURRET_DEBUG
 //#define TURRET_DEBUG_TARGETVALIDATE
@@ -350,29 +339,43 @@
 /// Add a target
 .float(entity e_target,entity e_sender) turret_addtarget;
 
-.float call_diehook;
-.float call_respwnhook;
+//.float call_diehook;
+//.float call_respwnhook;
 .void() turret_diehook;
 .void() turret_respawnhook;
 
 /*
+#define TEH_THINK 2
+#define TEH_DAMAGE 4
+#define TEH_DIE 8
+#define TEH_RESPAWN 16
+#define TEH_TRACK 32
+#define TEH_AIM 64
+#define TEH_SELECT 128
+.float(float event_id) turret_eventhook;
+*/
+
+/*
 * Some turrets need other aimsystems then other.
 * This should return the place to aim at, not acctualy turn or
 * pitch anyting.
 *
-* use turret_stdproc_aim# or Make your own.
+* use turret_stdproc_aim* or Make your own.
 * Make sure you update tur_enemy_dist and tur_enemy_adist
 * with the apropriate info, if you do.
+
+removed.
 */
 /// function used to aim, usualy turret_stdproc_aim_generic
-.vector() turret_aim;
+//.vector() turret_aim;
 
 /*
 * This is where the acctual turret turning should take place
 * Use turret_stdproc_track or make your own.
+wkacked to save mem.
 */
-/// Function used to turn and pitch the .tur_head usualy turret_stdproc_track
-.void() turret_track;
+// Function used to turn and pitch the .tur_head usualy turret_stdproc_track
+//.void() turret_track;
 
 /*
 * Target selection, preferably but not nessesarely
@@ -385,12 +388,13 @@
 * Damage, death and respawn.
 */
 void turret_gibs_precash();
-/// Function to handle incomming damage. usualy turret_stdproc_damage
-.void(entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector vforce) turret_damagefunc;
-/// Function to handle the event of death. usualy turret_stdproc_die
-.void() turret_diefunc;
- /// Function that handles rebirth. usualy turret_stdproc_respawn
-.void() turret_spawnfunc;
+// generalized so save mem (on fields)
+// Function to handle incomming damage. usualy turret_stdproc_damage
+//.void(entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector vforce) turret_damagefunc;
+// Function to handle the event of death. usualy turret_stdproc_die
+//.void() turret_diefunc;
+// Function that handles rebirth. usualy turret_stdproc_respawn
+//.void() turret_spawnfunc;
 
 /*
 * Stuff to plug into requierd but unused callbacks.
@@ -423,8 +427,8 @@
 */
 /// Generic aimer guided by self.aim_flags
 vector turret_stdproc_aim_generic()
-/// Straight line, current location
-vector  turret_stdproc_aim_simple()
+// Straight line, current location
+//vector  turret_stdproc_aim_simple()
 
 /*
 * Turret turning & pitch

Modified: trunk/data/qcsrc/server/tturrets/system/turret_system_aimprocs.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/system/turret_system_aimprocs.qc	2008-10-03 10:33:57 UTC (rev 4602)
+++ trunk/data/qcsrc/server/tturrets/system/turret_system_aimprocs.qc	2008-10-03 11:33:37 UTC (rev 4603)
@@ -60,7 +60,7 @@
         if (self.aim_flags & TFL_AIM_SHOTTIMECOMPENSATE)       // Need to conpensate for shot traveltime
             pre_pos += self.enemy.velocity * (self.tur_dist_enemy / self.shot_speed);
         else if (self.turrcaps_flags & TFL_TURRCAPS_HITSCAN)   // Hitscan gun, conpensate for frametime and posibly refire offset.
-            pre_pos += self.enemy.velocity * (frametime + min(max(self.attack_finished - time,0),self.ticrate*2));
+            pre_pos += self.enemy.velocity * (frametime + min(max(self.attack_finished_single - time,0),self.ticrate*2));
         else                                                   // No lead
             pre_pos += self.enemy.velocity;
 

Modified: trunk/data/qcsrc/server/tturrets/system/turret_system_damage.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/system/turret_system_damage.qc	2008-10-03 10:33:57 UTC (rev 4602)
+++ trunk/data/qcsrc/server/tturrets/system/turret_system_damage.qc	2008-10-03 11:33:37 UTC (rev 4603)
@@ -60,7 +60,7 @@
     float i;
     string s;
 
-    for(i=1;i<5;i++)
+    for (i=1;i<5;i++)
     {
         gib = spawn();
         gib.classname = "turret_gib";
@@ -172,14 +172,16 @@
 
     // base
     makevectors(self.angles);
-    if(random() > 0.5)
+    if (random() > 0.5)
     {
         turret_trowgib(self.origin, '0 0 0','1 1 1',"models/turrets/base-gib2.md3",min(self.respawntime,20),1,1);
         t_dir = (v_up * 700) + (randomvec() * 300);
         turret_trowgib(self.origin, t_dir,'1 1 1',"models/turrets/base-gib3.md3",min(self.respawntime,10),1,1);
         t_dir = (v_up * 700) + (randomvec() * 300);
         turret_trowgib(self.origin, t_dir,'1 1 1',"models/turrets/base-gib4.md3",min(self.respawntime,10),1,1);
-    } else {
+    }
+    else
+    {
         turret_trowgib(self.origin, '0 0 0','1 1 1',"models/turrets/base-gib1.md3",min(self.respawntime,20),1,1);
     }
 
@@ -195,11 +197,11 @@
 
 // Setup respawn
     self.nextthink      = time + self.respawntime;
-    self.think          = self.turret_spawnfunc;
+    //self.think          = self.turret_spawnfunc;
+    self.think          = turret_stdproc_respawn;
 
-    if(self.call_diehook)
+    if (self.turret_diehook)
         self.turret_diehook();
-
 }
 
 void turret_stdproc_respawn()
@@ -238,7 +240,7 @@
     self.nextthink  = time + self.ticrate;
     self.think      = turret_think;
 
-    if(self.call_respwnhook)
+    if (self.turret_respawnhook)
         self.turret_respawnhook();
 
 }
@@ -248,14 +250,14 @@
 */
 void turret_stdproc_damage (entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector vforce)
 {
-    entity baseent;
+    entity baseent,oldself;
     // entity player;
 
     if (self.health <= 0) return;
 
     // Damage func is shared on all parts as standard, we need to know what the master entity of this turret is.
     // if ((self.classname == "turret_head")||(self.classname == "turret_gun")||(self.classname == "turret_badge"))
-    if(self.owner)
+    if (self.owner)
         baseent = self.owner;
     else
         baseent = self;
@@ -266,12 +268,14 @@
         {
             sprint(attacker,"Turret: Im on your team!\n");
             return;
-        } else {
-			/*
+        }
+        else
+        {
+            /*
             // This will get enoying fast...
-			FOR_EACH_PLAYER(player)
-				if(player.team == self.team)
-					sprint(player, "The enemy is attacking your base!");
+            FOR_EACH_PLAYER(player)
+            	if(player.team == self.team)
+            		sprint(player, "The enemy is attacking your base!");
 
             */
         }
@@ -281,14 +285,14 @@
     baseent.health = baseent.health - damage;
 
     // thorw head slightly off aim when hit?
-    if((self.classname == "turret_head") || (self.classname == "turret_gun"))
-    if(self.damage_flags & TFL_DMG_HEADSHAKE)
-    {
-        // makevectors(baseent.tur_head.v_angle);
-         baseent.tur_head.angles = baseent.tur_head.angles + randomvec() * damage;
-    }
+    if ((self.classname == "turret_head") || (self.classname == "turret_gun"))
+        if (self.damage_flags & TFL_DMG_HEADSHAKE)
+        {
+            // makevectors(baseent.tur_head.v_angle);
+            baseent.tur_head.angles = baseent.tur_head.angles + randomvec() * damage;
+        }
 
-    if(self.turrcaps_flags & TFL_TURRCAPS_MOVE)
+    if (self.turrcaps_flags & TFL_TURRCAPS_MOVE)
     {
         self.velocity = self.velocity + vforce;
     }
@@ -300,8 +304,12 @@
 
     if (self.health <= 0)
     {
+        oldself = self;
         self = baseent;
-        baseent.turret_diefunc();
+        turret_stdproc_die();
+        self = oldself;
+
+        //baseent.turret_diefunc();
     }
 }
 

Modified: trunk/data/qcsrc/server/tturrets/system/turret_system_main.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/system/turret_system_main.qc	2008-10-03 10:33:57 UTC (rev 4602)
+++ trunk/data/qcsrc/server/tturrets/system/turret_system_main.qc	2008-10-03 11:33:37 UTC (rev 4603)
@@ -66,7 +66,7 @@
     ent.ammo_recharge = cvar(cvar_gets(sbase,"_ammo_recharge")) * ent.turret_scale_ammo;
 
     ent.aim_firetolerance_dist = cvar(cvar_gets(sbase,"_aim_firetolerance_dist"));
-    ent.aim_firetolerance_angle = cvar(cvar_gets(sbase,"_aim_firetolerance_angle"));
+//    ent.aim_firetolerance_angle = cvar(cvar_gets(sbase,"_aim_firetolerance_angle"));
     ent.aim_speed = cvar(cvar_gets(sbase,"_aim_speed")) * ent.turret_scale_aim;
     ent.aim_maxrot = cvar(cvar_gets(sbase,"_aim_maxrot"));
     ent.aim_maxpitch = cvar(cvar_gets(sbase,"_aim_maxpitch"));
@@ -289,7 +289,7 @@
 
     // Ready?
     if (self.firecheck_flags & TFL_FIRECHECK_REFIRE)
-        if (self.attack_finished >= time) return 0;
+        if (self.attack_finished_single >= time) return 0;
 
     //
     if (self.firecheck_flags & TFL_FIRECHECK_DEAD)
@@ -328,7 +328,7 @@
     if (self.shot_volly > 1)
     {
         if (self.volly_counter == self.shot_volly)
-            if (self.ammo < (self.shot_dmg * self.shot_volly +1))
+            if (self.ammo < (self.shot_dmg * self.shot_volly))
                 return 0;
     }
 
@@ -517,8 +517,9 @@
         {
             if (e.tur_head != world)
             {
+
                 load_unit_settings(e,e.cvar_basename,1);
-                self.turret_postthink();
+                e.turret_postthink();
             }
 
             e = nextent(e);
@@ -548,7 +549,8 @@
     {
         dprint("Warning: Inactive or dead turret running the think function!\n");
         self.enemy = world;
-        self.turret_track();
+        //self.turret_track();
+        turret_stdproc_track();
         return;
     }
 
@@ -577,25 +579,20 @@
     else
     {
         // Check if we have a vailid enemy, and get one if we dont.
-        if (self.emaster != world)
+            // turret_do_updates(self);
+        if ((turret_validate_target(self,self.enemy,self.target_validate_flags) <= 0) || (self.cnt < time))
         {
-            self.enemy = self.emaster.enemy;
+            self.enemy = turret_select_target();
+            self.cnt = time + self.ticrate * 3;
         }
-        else
-        {
-            // turret_do_updates(self);
-            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 * 3;
-            }
-        }
 
+
         // No target, just go to idle, do any custom stuff and bail.
         if (self.enemy == world)
         {
             // Turn & pitch
-            self.turret_track();
+            if (!self.track_flags & TFL_TRACK_NO)
+                turret_stdproc_track();
 
             // do any per-turret stuff
             self.turret_postthink();
@@ -609,11 +606,13 @@
 
         // Predict or whatnot
         if (!self.aim_flags & TFL_AIM_NO)
-            self.tur_aimpos = self.turret_aim();
+            self.tur_aimpos = turret_stdproc_aim_generic();
+            //self.tur_aimpos = self.turret_aim();
 
         // Turn & pitch
         if (!self.track_flags & TFL_TRACK_NO)
-            self.turret_track();
+            turret_stdproc_track();
+            //self.turret_track();
 
         // Update
         turret_do_updates(self);
@@ -634,7 +633,7 @@
 
     self.turret_firefunc();
 
-    self.attack_finished    = time + self.shot_refire;
+    self.attack_finished_single    = time + self.shot_refire;
     self.ammo               = self.ammo - self.shot_dmg;
     self.volly_counter      = self.volly_counter - 1;
 
@@ -645,7 +644,7 @@
         if (self.shoot_flags & TFL_SHOOT_CLEARTARGET) self.enemy = world;
 
         if (self.shot_volly > 1)
-            self.attack_finished = time + self.shot_volly_refire;
+            self.attack_finished_single = time + self.shot_volly_refire;
     }
 
 
@@ -798,8 +797,8 @@
     if (!self.aim_firetolerance_dist)     self.aim_firetolerance_dist  = 5 + (self.shot_radius * 2);
     self.aim_firetolerance_dist = bound(0.1,self.aim_firetolerance_dist,MAX_SHOT_DISTANCE);
 
-    if (!self.aim_firetolerance_angle)     self.aim_firetolerance_angle  = 10;
-    self.aim_firetolerance_angle = bound(0.1,self.aim_firetolerance_angle,360);
+//    if (!self.aim_firetolerance_angle)     self.aim_firetolerance_angle  = 10;
+//    self.aim_firetolerance_angle = bound(0.1,self.aim_firetolerance_angle,360);
 
     if (!self.aim_flags) self.aim_flags = TFL_AIM_LEAD | TFL_AIM_SHOTTIMECOMPENSATE | TFL_AIM_ZEASE;
 
@@ -875,17 +874,6 @@
     self.tur_head.netname = self.tur_head.classname     = "turret_head";
     self.tur_head.team = self.team;
 
-    //Slave mode?
-    if (self.master_nameof != "")
-    {
-        self.emaster = find(world, master_name, self.master_name);
-        if (self.emaster == world)
-        {
-            self.master_nameof = "";
-            dprint("Turret has bad invalid!\n");
-        }
-    }
-
     // Defend mode?
     if (self.target != "")
     {
@@ -936,18 +924,18 @@
     {
         self.turret_prethink        = turret_stdproc_true;
         self.turret_score_target    = turret_stdproc_targetscore_support;
-        self.turret_aim             = turret_stdproc_aim_generic;
-        self.turret_track           = turret_stdproc_track;
+        //self.turret_aim             = turret_stdproc_aim_generic;
+        //self.turret_track           = turret_stdproc_track;
         self.turret_firecheckfunc   = turret_stdproc_firecheck;
         self.turret_firefunc        = turret_stdproc_fire;
         self.turret_postthink       = turret_stdproc_nothing;
 
-        self.turret_damagefunc          = turret_stdproc_damage;
+        //self.turret_damagefunc          = turret_stdproc_damage;
         self.event_damage               = turret_stdproc_damage;
         self.tur_head.event_damage      = turret_stdproc_damage;
 
-        self.turret_diefunc             = turret_stdproc_die;
-        self.turret_spawnfunc           = turret_stdproc_respawn;
+        //self.turret_diefunc             = turret_stdproc_die;
+        //self.turret_spawnfunc           = turret_stdproc_respawn;
 
     }
     else
@@ -956,22 +944,22 @@
         self.turret_prethink        = turret_stdproc_true;
         self.turret_score_target    = turret_stdproc_targetscore_generic;
 
-        if (self.aim_flags & TFL_AIM_SIMPLE)
-            self.turret_aim             = turret_stdproc_aim_simple;
-        else
-            self.turret_aim             = turret_stdproc_aim_generic;
+        //if (self.aim_flags & TFL_AIM_SIMPLE)
+        //    self.turret_aim             = turret_stdproc_aim_simple;
+        //else
+        //    self.turret_aim             = turret_stdproc_aim_generic;
 
-        self.turret_track           = turret_stdproc_track;
+        //self.turret_track           = turret_stdproc_track;
         self.turret_firecheckfunc   = turret_stdproc_firecheck;
         self.turret_firefunc        = turret_stdproc_fire;
         self.turret_postthink       = turret_stdproc_nothing;
 
-        self.turret_damagefunc          = turret_stdproc_damage;
+        //self.turret_damagefunc          = turret_stdproc_damage;
         self.event_damage               = turret_stdproc_damage;
         self.tur_head.event_damage      = turret_stdproc_damage;
 
-        self.turret_diefunc             = turret_stdproc_die;
-        self.turret_spawnfunc           = turret_stdproc_respawn;
+        //self.turret_diefunc             = turret_stdproc_die;
+        //self.turret_spawnfunc           = turret_stdproc_respawn;
         self.turret_addtarget           = turret_stdproc_false;
     }
 

Modified: trunk/data/qcsrc/server/tturrets/units/turret_unit_flac.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/turret_unit_flac.qc	2008-10-03 10:33:57 UTC (rev 4602)
+++ trunk/data/qcsrc/server/tturrets/units/turret_unit_flac.qc	2008-10-03 11:33:37 UTC (rev 4603)
@@ -31,31 +31,28 @@
     proj.nextthink          = time + (vlen(self.tur_aimpos - self.tur_shotorg_updated) / self.shot_speed) + (random() * self.shot_spread);
 
     self.tur_head.frame = self.tur_head.frame + 1;
-    if(self.tur_head.frame >= 4) self.tur_head.frame = 0;
+    if (self.tur_head.frame >= 4) self.tur_head.frame = 0;
 
 }
 
 void turret_flac_projectile_explode()
 {
-    //vector org2;
-    float d;
+    float ftmp;
 
-    float b;
-    //org2 = findbetterlocation (self.origin, 12);
     te_explosion (self.origin);
 
-    b = crandom();
-    if (b<-0.7)
+    ftmp = crandom();
+    if (ftmp<-0.7)
         sound (self, CHAN_PROJECTILE, "weapons/hagexp1.wav", 1, ATTN_NORM);
-    else if (b<0.4)
+    else if (ftmp<0.4)
         sound (self, CHAN_PROJECTILE, "weapons/hagexp2.wav", 1, ATTN_NORM);
-    else if (b<1)
+    else if (ftmp<1)
         sound (self, CHAN_PROJECTILE, "weapons/hagexp3.wav", 1, ATTN_NORM);
 
 
     self.event_damage = SUB_Null;
 
-    d = RadiusDamage (self, self.owner, self.owner.shot_dmg, 0, self.owner.shot_radius, world, self.owner.shot_force, DEATH_TURRET);
+    ftmp = RadiusDamage (self, self.owner, self.owner.shot_dmg, 0, self.owner.shot_radius, world, self.owner.shot_force, DEATH_TURRET);
 
 #ifdef TURRET_DEBUG
     self.owner.tur_dbg_dmg_t_h = self.owner.tur_dbg_dmg_t_h + d; //self.owner.shot_dmg;
@@ -75,12 +72,6 @@
     self.ammo_flags     = TFL_AMMO_ROCKETS | TFL_AMMO_RECHARGE;
     self.aim_flags      = TFL_AIM_LEAD | TFL_AIM_SHOTTIMECOMPENSATE;
 
-
-
-    precache_model ("models/turrets/base.md3");
-    precache_model ("models/turrets/flac.md3");
-    precache_model("models/turrets/pd_proj.md3");
-
     if (turret_stdproc_init("flac_std") == 0)
     {
         remove(self);
@@ -90,7 +81,7 @@
     setmodel(self,"models/turrets/base.md3");
     setmodel(self.tur_head,"models/turrets/flac.md3");
 
-    if(!turret_tag_setup(0))
+    if (!turret_tag_setup(0))
         dprint("Warning: Turret ",self.classname, " faild to initialize md3 tags\n");
 
     // Our fire routine
@@ -102,6 +93,10 @@
 
 void spawnfunc_turret_flac()
 {
+    precache_model ("models/turrets/base.md3");
+    precache_model ("models/turrets/flac.md3");
+    precache_model("models/turrets/pd_proj.md3");
+
     self.think = turret_flac_dinit;
     self.nextthink = time + 0.5;
 }

Modified: trunk/data/qcsrc/server/tturrets/units/turret_unit_fusionreactor.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/turret_unit_fusionreactor.qc	2008-10-03 10:33:57 UTC (rev 4602)
+++ trunk/data/qcsrc/server/tturrets/units/turret_unit_fusionreactor.qc	2008-10-03 11:33:37 UTC (rev 4603)
@@ -47,8 +47,6 @@
 
     self.track_flags = TFL_TRACK_NO;
 
-    precache_model ("models/turrets/reactor.md3");
-    precache_model ("models/turrets/base.md3");
     if (turret_stdproc_init("fusreac_std") == 0)
     {
         remove(self);
@@ -76,7 +74,9 @@
 */
 void spawnfunc_turret_fusionreactor()
 {
-    // return;
+    precache_model ("models/turrets/reactor.md3");
+    precache_model ("models/turrets/base.md3");
+
     self.think = turret_fusionreactor_dinit;
     self.nextthink = time + 0.5;
 }

Modified: trunk/data/qcsrc/server/tturrets/units/turret_unit_hellion.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/turret_unit_hellion.qc	2008-10-03 10:33:57 UTC (rev 4602)
+++ trunk/data/qcsrc/server/tturrets/units/turret_unit_hellion.qc	2008-10-03 11:33:37 UTC (rev 4603)
@@ -10,16 +10,16 @@
 
 void turret_hellion_postthink()
 {
-    if(cvar("g_turrets_reloadcvars"))
+    if (cvar("g_turrets_reloadcvars"))
     {
-        if(!self.shot_speed_max)  self.shot_speed_max  = cvar("g_turrets_unit_hellion_std_shot_speed_max");
-        if(!self.shot_speed_gain) self.shot_speed_gain = cvar("g_turrets_unit_hellion_std_shot_speed_gain");
+        if (!self.shot_speed_max)  self.shot_speed_max  = cvar("g_turrets_unit_hellion_std_shot_speed_max");
+        if (!self.shot_speed_gain) self.shot_speed_gain = cvar("g_turrets_unit_hellion_std_shot_speed_gain");
     }
 
-    if(self.tur_head.frame != 0)
+    if (self.tur_head.frame != 0)
         self.tur_head.frame = self.tur_head.frame + 1;
 
-    if(self.tur_head.frame > 7)
+    if (self.tur_head.frame > 7)
         self.tur_head.frame = 0;
 }
 
@@ -31,7 +31,7 @@
 
     missile = spawn ();
     setorigin(missile, self.tur_shotorg_updated);
-    sound (missile, CHAN_VOICE, "weapons/rocket_fly.wav", 0.4, ATTN_NORM);
+    sound (missile, CHAN_PROJECTILE, "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
 
@@ -60,7 +60,7 @@
     // switch tubes
     self.tur_shotorg_y = self.tur_shotorg_y * -1;
 
-    if(self.tur_head.frame == 0)
+    if (self.tur_head.frame == 0)
         self.tur_head.frame = self.tur_head.frame + 1;
 
 }
@@ -109,12 +109,14 @@
 
     olddir = normalize(self.velocity);
 
-    if(self.enemy)
+    if (self.enemy)
     {
         // Predict enemy position
         itime = vlen(self.enemy.origin - self.origin) / vlen(self.velocity);
         pre_pos = self.enemy.origin + self.enemy.velocity * itime;
-    } else {
+    }
+    else
+    {
         pre_pos = self.origin + olddir * 1024;
     }
 
@@ -176,8 +178,8 @@
 {
     if (self.netname == "")      self.netname  = "Hellion Missile Turret";
 
-    if(!self.shot_speed_max)  self.shot_speed_max  = cvar("g_turrets_unit_hellion_std_shot_speed_max");
-    if(!self.shot_speed_gain) self.shot_speed_gain = cvar("g_turrets_unit_hellion_std_shot_speed_gain");
+    if (!self.shot_speed_max)  self.shot_speed_max  = cvar("g_turrets_unit_hellion_std_shot_speed_max");
+    if (!self.shot_speed_gain) self.shot_speed_gain = cvar("g_turrets_unit_hellion_std_shot_speed_gain");
 
     self.turrcaps_flags = TFL_TURRCAPS_RADIUSDMG | TFL_TURRCAPS_FASTPROJ | TFL_TURRCAPS_PLAYERKILL | TFL_TURRCAPS_MISSILEKILL;
     self.aim_flags = TFL_AIM_SIMPLE;
@@ -185,10 +187,6 @@
     self.firecheck_flags = TFL_FIRECHECK_WORLD | TFL_FIRECHECK_DEAD | TFL_FIRECHECK_DISTANCES | TFL_FIRECHECK_TEAMCECK | TFL_FIRECHECK_REFIRE | TFL_FIRECHECK_AFF | TFL_FIRECHECK_OWM_AMMO;
     self.ammo_flags = TFL_AMMO_ROCKETS | TFL_AMMO_RECHARGE;
 
-    precache_model ( "models/turrets/mlrs_rocket.md3");
-    precache_model ("models/turrets/hellion.md3");
-    precache_model ("models/turrets/base.md3");
-
     if (turret_stdproc_init("hellion_std") == 0)
     {
         remove(self);
@@ -198,7 +196,7 @@
     setmodel(self,"models/turrets/base.md3");
     setmodel(self.tur_head,"models/turrets/hellion.md3");
 
-    if(!turret_tag_setup(0))
+    if (!turret_tag_setup(0))
         dprint("Warning: Turret ",self.classname, " faild to initialize md3 tags\n");
 
     // Our fire routine
@@ -212,6 +210,10 @@
 */
 void spawnfunc_turret_hellion()
 {
+    precache_model ( "models/turrets/mlrs_rocket.md3");
+    precache_model ("models/turrets/hellion.md3");
+    precache_model ("models/turrets/base.md3");
+
     self.think = turret_hellion_dinit;
     self.nextthink = time + 0.5;
 }

Modified: trunk/data/qcsrc/server/tturrets/units/turret_unit_hk.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/turret_unit_hk.qc	2008-10-03 10:33:57 UTC (rev 4602)
+++ trunk/data/qcsrc/server/tturrets/units/turret_unit_hk.qc	2008-10-03 11:33:37 UTC (rev 4603)
@@ -23,7 +23,7 @@
 {
     if (e_target)
     {
-       if (turret_validate_target(self,e_target,self.target_validate_flags) > 0)
+        if (turret_validate_target(self,e_target,self.target_validate_flags) > 0)
         {
             self.enemy = e_target;
             return 1;
@@ -49,7 +49,7 @@
     // player
     if (e_target.flags & FL_CLIENT)
     {
-        if(self.owner.target_select_playerbias < 0)
+        if (self.owner.target_select_playerbias < 0)
             return 0;
 
         if (e_target.deadflag != DEAD_NO)
@@ -91,7 +91,7 @@
     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_VOICE, "weapons/rocket_fly.wav", 0.4, ATTN_NORM);
+    sound    (missile, CHAN_PROJECTILE, "weapons/rocket_fly.wav", 0.4, ATTN_NORM);
     setorigin(missile, self.tur_shotorg_updated);
 
     missile.scale            = 1;
@@ -118,7 +118,7 @@
 
     te_explosion (missile.origin);
 
-    if(self.tur_head.frame == 0)
+    if (self.tur_head.frame == 0)
         self.tur_head.frame = self.tur_head.frame + 1;
 
 }
@@ -296,11 +296,11 @@
         //wishdir = normalize(self.enemy.origin - (self.enemy.origin + self.enemy.velocity));
     }
 
-    if((myspeed > hk_minspeed) && (self.cnt > time))
+    if ((myspeed > hk_minspeed) && (self.cnt > time))
         myspeed = min(myspeed * hk_accel2,hk_maxspeed);
 
     // Ranoutagazfish?
-    if(self.cnt < time)
+    if (self.cnt < time)
     {
         self.cnt = time + 0.25;
         self.nextthink = 0;
@@ -383,7 +383,7 @@
 
 void turret_hk_postthink()
 {
-    if(cvar("g_turrets_reloadcvars"))
+    if (cvar("g_turrets_reloadcvars"))
     {
         hk_maxspeed = cvar("g_turrets_unit_hk_std_shot_speed_max");
         hk_minspeed = cvar("g_turrets_unit_hk_std_shot_speed");
@@ -392,10 +392,10 @@
         hk_decel    = cvar("g_turrets_unit_hk_std_shot_speed_decel");
     }
 
-    if(self.tur_head.frame != 0)
+    if (self.tur_head.frame != 0)
         self.tur_head.frame = self.tur_head.frame + 1;
 
-    if(self.tur_head.frame > 5)
+    if (self.tur_head.frame > 5)
         self.tur_head.frame = 0;
 
 }
@@ -424,12 +424,6 @@
 
     self.shoot_flags = TFL_SHOOT_CLEARTARGET;
 
-
-    precache_model ( "models/turrets/hunter2.md3");
-
-    precache_model ("models/turrets/base.md3");
-    precache_model ("models/turrets/hk.md3");
-
     if (turret_stdproc_init("hk_std") == 0)
     {
         remove(self);
@@ -441,7 +435,7 @@
     setmodel(self,"models/turrets/base.md3");
     setmodel(self.tur_head,"models/turrets/hk.md3");
 
-    if(!turret_tag_setup(0))
+    if (!turret_tag_setup(0))
         dprint("Warning: Turret ",self.classname, " faild to initialize md3 tags\n");
 
     // Our fire routine
@@ -466,6 +460,10 @@
 
 void spawnfunc_turret_hk()
 {
+    precache_model ( "models/turrets/hunter2.md3");
+    precache_model ("models/turrets/base.md3");
+    precache_model ("models/turrets/hk.md3");
+
     self.think = turret_hk_dinit;
     self.nextthink = time + 0.5;
 }

Modified: trunk/data/qcsrc/server/tturrets/units/turret_unit_machinegun.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/turret_unit_machinegun.qc	2008-10-03 10:33:57 UTC (rev 4602)
+++ trunk/data/qcsrc/server/tturrets/units/turret_unit_machinegun.qc	2008-10-03 11:33:37 UTC (rev 4603)
@@ -11,7 +11,7 @@
     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);
-    trailparticles(self,particleeffectnum("EF_MINIGUNTRAIL"),self.tur_shotorg_updated,trace_endpos);
+    trailparticles(self,particleeffectnum("EF_MGTURRETTRAIL"),self.tur_shotorg_updated,trace_endpos);
 
     // muzzle flash for 3rd person view
     flash = spawn();
@@ -31,9 +31,6 @@
 {
     if (self.netname == "")      self.netname     = "Machinegun Turret";
 
-    precache_model ("models/turrets/machinegun.md3");
-    precache_model ("models/turrets/base.md3");
-
     self.ammo_flags = TFL_AMMO_BULLETS | TFL_AMMO_RECHARGE | TFL_AMMO_RECIVE;
     self.turrcaps_flags = TFL_TURRCAPS_HITSCAN | TFL_TURRCAPS_PLAYERKILL;
     self.aim_flags = TFL_AIM_LEAD | TFL_AIM_ZEASE;
@@ -47,7 +44,7 @@
     setmodel(self,"models/turrets/base.md3");
     setmodel(self.tur_head,"models/turrets/machinegun.md3");
 
-    if(!turret_tag_setup(0))
+    if (!turret_tag_setup(0))
         dprint("Warning: Turret ",self.classname, " faild to initialize md3 tags\n");
 
     // Our fire routine
@@ -65,6 +62,9 @@
 */
 void spawnfunc_turret_machinegun()
 {
+    precache_model ("models/turrets/machinegun.md3");
+    precache_model ("models/turrets/base.md3");
+
     self.think = turret_machinegun_std_init;
     self.nextthink = time + 0.5;
 }

Modified: trunk/data/qcsrc/server/tturrets/units/turret_unit_mlrs.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/turret_unit_mlrs.qc	2008-10-03 10:33:57 UTC (rev 4602)
+++ trunk/data/qcsrc/server/tturrets/units/turret_unit_mlrs.qc	2008-10-03 11:33:37 UTC (rev 4603)
@@ -6,7 +6,7 @@
 void turret_mlrs_postthink()
 {
 
-    if((self.tur_head.frame >= 6) && (self.attack_finished <= time))
+    if ((self.tur_head.frame >= 6) && (self.attack_finished_single <= time))
         self.tur_head.frame = 0;
 }
 
@@ -21,7 +21,7 @@
     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_VOICE, "weapons/rocket_fly.wav", 0.4, ATTN_NORM);
+    sound (missile, CHAN_PROJECTILE, "weapons/rocket_fly.wav", 0.4, ATTN_NORM);
     setorigin(missile, self.tur_shotorg_updated);
     missile.classname          = "mlrs_missile";
     missile.owner              = self;
@@ -57,13 +57,15 @@
     pointparticles(particleeffectnum("rocket_explode"), org2, '0 0 0', 1);
 
     self.event_damage = SUB_Null;
-    RadiusDamage (self, self.owner, self.owner.shot_dmg, 0, self.owner.shot_radius, world, self.owner.shot_force, DEATH_TURRET);
 
 #ifdef TURRET_DEBUG
     float d;
+
     d = RadiusDamage (self, self.owner, self.owner.shot_dmg, 0, self.owner.shot_radius, world, self.owner.shot_force, DEATH_TURRET);
     self.owner.tur_dbg_dmg_t_h = self.owner.tur_dbg_dmg_t_h + d; //self.owner.shot_dmg;
     self.owner.tur_dbg_dmg_t_f = self.owner.tur_dbg_dmg_t_f + self.owner.shot_dmg;
+#else
+    RadiusDamage (self, self.owner, self.owner.shot_dmg, 0, self.owner.shot_radius, world, self.owner.shot_force, DEATH_TURRET);
 #endif
 
     // Target dead, get another is still targeting the same.
@@ -81,10 +83,6 @@
     self.ammo_flags = TFL_AMMO_ROCKETS | TFL_AMMO_RECHARGE;
     self.aim_flags = TFL_AIM_LEAD | TFL_AIM_ZEASE | TFL_AIM_SHOTTIMECOMPENSATE;
 
-    precache_model ( "models/turrets/rocket.md3");
-    precache_model ("models/turrets/mlrs.md3");
-    precache_model ("models/turrets/base.md3");
-
     if (turret_stdproc_init("mlrs_std") == 0)
     {
         remove(self);
@@ -94,7 +92,7 @@
     setmodel(self,"models/turrets/base.md3");
     setmodel(self.tur_head,"models/turrets/mlrs.md3");
 
-    if(!turret_tag_setup(0))
+    if (!turret_tag_setup(0))
         dprint("Warning: Turret ",self.classname, " faild to initialize md3 tags\n");
 
     // Our fire routine
@@ -108,6 +106,10 @@
 
 void spawnfunc_turret_mlrs()
 {
+    precache_model ( "models/turrets/rocket.md3");
+    precache_model ("models/turrets/mlrs.md3");
+    precache_model ("models/turrets/base.md3");
+
     self.think = turret_mlrs_dinit;
     self.nextthink = time + 0.5;
 }

Modified: trunk/data/qcsrc/server/tturrets/units/turret_unit_phaser.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/turret_unit_phaser.qc	2008-10-03 10:33:57 UTC (rev 4602)
+++ trunk/data/qcsrc/server/tturrets/units/turret_unit_phaser.qc	2008-10-03 11:33:37 UTC (rev 4603)
@@ -6,18 +6,18 @@
 
 float turret_phaser_firecheck()
 {
-    if(self.fireflag != 0) return 0;
+    if (self.fireflag != 0) return 0;
     return turret_stdproc_firecheck();
 }
 
 void turret_phaser_postthink()
 {
-    if(self.tur_head.frame == 0)
+    if (self.tur_head.frame == 0)
         return;
 
-    if(self.fireflag == 1)
+    if (self.fireflag == 1)
     {
-        if(self.tur_head.frame == 10)
+        if (self.tur_head.frame == 10)
             self.tur_head.frame = 1;
         else
             self.tur_head.frame = self.tur_head.frame +1;
@@ -25,7 +25,7 @@
     else if (self.fireflag == 2 )
     {
         self.tur_head.frame = self.tur_head.frame +1;
-        if(self.tur_head.frame == 15)
+        if (self.tur_head.frame == 15)
         {
             self.tur_head.frame = 0;
             self.fireflag = 0;
@@ -35,9 +35,9 @@
 
 void beam_think()
 {
-    if((time > self.cnt)||(self.owner.deadflag != DEAD_NO))
+    if ((time > self.cnt)||(self.owner.deadflag != DEAD_NO))
     {
-        self.owner.attack_finished = time + self.owner.shot_refire;
+        self.owner.attack_finished_single = time + self.owner.shot_refire;
         self.owner.fireflag = 2;
         self.owner.tur_head.frame = 10;
         sound (self, CHAN_PROJECTILE, "", 1, ATTN_NORM);
@@ -47,16 +47,16 @@
 
     turret_do_updates(self.owner);
 
-    if(time - self.shot_spread > 0)
+    if (time - self.shot_spread > 0)
     {
-            self.shot_spread = time + 2;
-            sound (self, CHAN_VOICE, "turrets/phaser.ogg", 1, ATTN_NORM);
+        self.shot_spread = time + 2;
+        sound (self, CHAN_VOICE, "turrets/phaser.ogg", 1, ATTN_NORM);
     }
 
 
     self.nextthink = time + self.ticrate;
 
-    self.owner.attack_finished = time + frametime;
+    self.owner.attack_finished_single = time + frametime;
     entity oldself;
     oldself = self;
     self = self.owner;
@@ -89,21 +89,21 @@
     beam.owner = self;
     beam.shot_dmg = self.shot_dmg / (self.shot_speed / beam.ticrate);
     beam.scale = self.target_range_fire / 256;
-	beam.movetype = MOVETYPE_NONE;
+    beam.movetype = MOVETYPE_NONE;
     beam.enemy = self.enemy;
-	beam.bot_dodge = TRUE;
-	beam.bot_dodgerating = beam.shot_dmg;
-	sound (beam, CHAN_VOICE, "turrets/phaser.ogg", 1, ATTN_NORM);
+    beam.bot_dodge = TRUE;
+    beam.bot_dodgerating = beam.shot_dmg;
+    sound (beam, CHAN_PROJECTILE, "turrets/phaser.ogg", 1, ATTN_NORM);
     self.fireflag = 1;
 
-    beam.attack_finished = self.attack_finished;
-    self.attack_finished = time; // + cvar("sys_ticrate");
+    beam.attack_finished_single = self.attack_finished_single;
+    self.attack_finished_single = time; // + cvar("sys_ticrate");
 
     setattachment(beam,self.tur_head,"tag_fire");
 
     soundat (self, trace_endpos, CHAN_PROJECTILE, "weapons/neximpact.wav", VOL_BASE, ATTN_NORM);
 
-    if(self.tur_head.frame == 0)
+    if (self.tur_head.frame == 0)
         self.tur_head.frame = 1;
 }
 
@@ -115,12 +115,6 @@
     self.ammo_flags = TFL_AMMO_ENERGY | TFL_AMMO_RECHARGE | TFL_AMMO_RECIVE;
     self.aim_flags = TFL_AIM_ZEASE | TFL_AIM_LEAD;
 
-
-    precache_sound ("turrets/phaser.ogg");
-    precache_model ("models/turrets/phaser.md3");
-    precache_model ("models/turrets/phaser_beam.md3");
-    precache_model ("models/turrets/base.md3");
-
     if (turret_stdproc_init("phaser_std") == 0)
     {
         remove(self);
@@ -130,7 +124,7 @@
     setmodel(self,"models/turrets/base.md3");
     setmodel(self.tur_head,"models/turrets/phaser.md3");
 
-    if(!turret_tag_setup(0))
+    if (!turret_tag_setup(0))
         dprint("Warning: Turret ",self.classname, " faild to initialize md3 tags\n");
 
     self.turret_firecheckfunc = turret_phaser_firecheck;
@@ -143,6 +137,11 @@
 */
 void spawnfunc_turret_phaser()
 {
+    precache_sound ("turrets/phaser.ogg");
+    precache_model ("models/turrets/phaser.md3");
+    precache_model ("models/turrets/phaser_beam.md3");
+    precache_model ("models/turrets/base.md3");
+
     self.think = turret_phaser_dinit;
     self.nextthink = time + 0.5;
 }

Modified: trunk/data/qcsrc/server/tturrets/units/turret_unit_plasma.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/turret_unit_plasma.qc	2008-10-03 10:33:57 UTC (rev 4602)
+++ trunk/data/qcsrc/server/tturrets/units/turret_unit_plasma.qc	2008-10-03 11:33:37 UTC (rev 4603)
@@ -9,15 +9,17 @@
 
 void turret_plasma_postthink()
 {
-    if(self.tur_head.frame != 0)
+    if (self.tur_head.frame != 0)
         self.tur_head.frame = self.tur_head.frame + 1;
 
-    if(self.classname == "turret_plasma_dual")
+    if (self.classname == "turret_plasma_dual")
     {
-        if(self.tur_head.frame >= 6)
+        if (self.tur_head.frame >= 6)
             self.tur_head.frame = 0;
-    } else {
-        if(self.tur_head.frame >= 5)
+    }
+    else
+    {
+        if (self.tur_head.frame >= 5)
             self.tur_head.frame = 0;
     }
 }
@@ -49,7 +51,7 @@
     proj.enemy           = self.enemy;
     proj.flags           = FL_PROJECTILE | FL_NOTARGET;
 
-    if(self.tur_head.frame == 0)
+    if (self.tur_head.frame == 0)
         self.tur_head.frame = 1;
 
     // trailparticles(proj,particleeffectnum("TR_REDPLASMA"),proj.origin,proj.origin + proj.velocity);
@@ -98,9 +100,6 @@
 {
     if (self.netname == "")      self.netname     = "Plasma Cannon";
 
-    precache_model ("models/turrets/plasma.md3");
-    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 | TFL_AIM_GROUND2;
 
@@ -113,7 +112,8 @@
     setmodel(self,"models/turrets/base.md3");
     setmodel(self.tur_head,"models/turrets/plasma.md3");
 
-    if(!turret_tag_setup(0))
+
+    if (!turret_tag_setup(0))
         dprint("Warning: Turret ",self.classname, " faild to initialize md3 tags\n");
 
     // Our fire routine
@@ -128,9 +128,6 @@
 {
     if (self.netname == "")      self.netname     = "Dual Plasma Cannon";
 
-    precache_model ("models/turrets/plasmad.md3");
-    precache_model ("models/turrets/base.md3");
-
     self.ammo_flags = TFL_AMMO_ENERGY | TFL_AMMO_RECHARGE | TFL_AMMO_RECIVE;
 
     if (turret_stdproc_init("plasma_dual") == 0)
@@ -142,13 +139,7 @@
     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))
+    if (!turret_tag_setup(0))
         dprint("Warning: Turret ",self.classname, " faild to initialize md3 tags\n");
 
     // select aim
@@ -172,6 +163,9 @@
 */
 void spawnfunc_turret_plasma()
 {
+    precache_model ("models/turrets/plasma.md3");
+    precache_model ("models/turrets/base.md3");
+
     self.think = turret_plasma_std_init;
     self.nextthink = time + 0.5;
 }
@@ -180,6 +174,9 @@
 */
 void spawnfunc_turret_plasma_dual()
 {
+    precache_model ("models/turrets/plasmad.md3");
+    precache_model ("models/turrets/base.md3");
+
     self.think = turret_plasma_dual_init;
     self.nextthink = time + 0.5;
 }

Modified: trunk/data/qcsrc/server/tturrets/units/turret_unit_targettrigger.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/turret_unit_targettrigger.qc	2008-10-03 10:33:57 UTC (rev 4602)
+++ trunk/data/qcsrc/server/tturrets/units/turret_unit_targettrigger.qc	2008-10-03 11:33:37 UTC (rev 4603)
@@ -4,14 +4,14 @@
 void turret_targettrigger_touch()
 {
     entity e;
-    if(self.cnt > time) return;
+    if (self.cnt > time) return;
     entity oldself;
     oldself = self;
 
     e = find(world, targetname, self.target);
     while (e)
     {
-        if(e.turrcaps_flags & TFL_TURRCAPS_RECIVETARGETS)
+        if (e.turrcaps_flags & TFL_TURRCAPS_RECIVETARGETS)
         {
             self = e;
             e.turret_addtarget(other,oldself);
@@ -29,7 +29,7 @@
 */
 void spawnfunc_turret_targettrigger()
 {
-    if(!cvar("g_turrets"))
+    if (!cvar("g_turrets"))
     {
         remove(self);
         return;

Modified: trunk/data/qcsrc/server/tturrets/units/turret_unit_tessla.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/turret_unit_tessla.qc	2008-10-03 10:33:57 UTC (rev 4602)
+++ trunk/data/qcsrc/server/tturrets/units/turret_unit_tessla.qc	2008-10-03 11:33:37 UTC (rev 4603)
@@ -14,25 +14,25 @@
     e = findradius(from.origin,range);
     while (e)
     {
-        if((e.toasted != 1) && (e != from))
-        if (turret_validate_target(self,e,self.target_validate_flags) > 0)
-        {
+        if ((e.toasted != 1) && (e != from))
+            if (turret_validate_target(self,e,self.target_validate_flags) > 0)
+            {
 
-            traceline(from.origin,e.origin,0,from);
-            if(trace_fraction > 0.9)
-            {
-                d = vlen(e.origin - from.origin);
-                if(d < dd)
+                traceline(from.origin,e.origin,0,from);
+                if (trace_fraction > 0.9)
                 {
-                    dd = d;
-                    etarget = e;
+                    d = vlen(e.origin - from.origin);
+                    if (d < dd)
+                    {
+                        dd = d;
+                        etarget = e;
+                    }
                 }
             }
-        }
         e = e.chain;
     }
 
-    if(etarget)
+    if (etarget)
     {
         te_smallflash(etarget.origin);
         te_lightning1(world,from.origin,etarget.origin);
@@ -48,10 +48,10 @@
     entity e,t;
     float d,r,i;
 
-    if(cvar("g_turrets_nofire") != 0)
+    if (cvar("g_turrets_nofire") != 0)
         return;
 
-    if(self.attack_finished > time) return;
+    if (self.attack_finished_single > time) return;
 
     d = self.shot_dmg;
     r = self.target_range;
@@ -65,22 +65,23 @@
     t = toast(e,r,d);
     remove(e);
 
-    if(t == world) return;
+    if (t == world) return;
 
     self.target_validate_flags = TFL_TARGETSELECT_PLAYERS | TFL_TARGETSELECT_MISSILES |
                                  TFL_TARGETSELECT_TEAMCHECK;
 
-    self.attack_finished = time + self.shot_refire;
+    self.attack_finished_single = time + self.shot_refire;
     self.ammo = self.ammo - self.shot_dmg;
-    for(i = 0;i < 10;i++)
+    for (i = 0;i < 10;i++)
     {
-        d *= 0.5; r *= 0.75;
+        d *= 0.5;
+        r *= 0.75;
         t = toast(t,r,d);
-        if(t == world) break;
+        if (t == world) break;
     }
 
     e = findchainfloat(toasted, 1);
-    while(e)
+    while (e)
     {
         e.toasted = 0;
         e = e.chain;
@@ -93,10 +94,10 @@
 
     self.tur_head.frame = self.tur_head.frame + 1;
 
-    if(self.tur_head.frame >= 11)
+    if (self.tur_head.frame >= 11)
         self.tur_head.frame = 0;
 
-    if(self.tur_head.avelocity == '0 0 0')
+    if (self.tur_head.avelocity == '0 0 0')
         self.tur_head.avelocity = '0 35 0';
 }
 
@@ -113,23 +114,19 @@
     self.aim_flags = TFL_AIM_NO;
     self.track_flags = TFL_TRACK_NO;
 
-    precache_model ("models/turrets/tesla_head.md3");
-    precache_model ("models/turrets/tesla_base.md3");
-
     if (turret_stdproc_init("tesla_std") == 0)
     {
         remove(self);
         return;
     }
 
+    setmodel(self,"models/turrets/tesla_base.md3");
+    setmodel(self.tur_head,"models/turrets/tesla_head.md3");
+
     self.target_validate_flags = TFL_TARGETSELECT_PLAYERS | TFL_TARGETSELECT_MISSILES |
                                  TFL_TARGETSELECT_RANGELIMTS | TFL_TARGETSELECT_TEAMCHECK;
 
-
-    setmodel(self,"models/turrets/tesla_base.md3");
-    setmodel(self.tur_head,"models/turrets/tesla_head.md3");
-
-    if(!turret_tag_setup(0))
+    if (!turret_tag_setup(0))
         dprint("Warning: Turret ",self.classname, " faild to initialize md3 tags\n");
 
     self.turret_firefunc = turret_stdproc_nothing;
@@ -140,7 +137,10 @@
 */
 void spawnfunc_turret_tesla()
 {
-    // return;
+    precache_model ("models/turrets/tesla_head.md3");
+    precache_model ("models/turrets/tesla_base.md3");
+
+
     self.think = turret_tesla_dinit;
     self.nextthink = time + 0.5;
 }




More information about the nexuiz-commits mailing list