[nexuiz-commits] r7686 - in trunk/data: . qcsrc/server/tturrets/include qcsrc/server/tturrets/system qcsrc/server/tturrets/units

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Tue Sep 8 06:48:35 EDT 2009


Author: tzork
Date: 2009-09-08 06:48:35 -0400 (Tue, 08 Sep 2009)
New Revision: 7686

Modified:
   trunk/data/qcsrc/server/tturrets/include/turrets_early.qh
   trunk/data/qcsrc/server/tturrets/system/system_aimprocs.qc
   trunk/data/qcsrc/server/tturrets/system/system_main.qc
   trunk/data/qcsrc/server/tturrets/units/unit_ewheel.qc
   trunk/data/qcsrc/server/tturrets/units/unit_flac.qc
   trunk/data/qcsrc/server/tturrets/units/unit_fusionreactor.qc
   trunk/data/qcsrc/server/tturrets/units/unit_hellion.qc
   trunk/data/qcsrc/server/tturrets/units/unit_hk.qc
   trunk/data/qcsrc/server/tturrets/units/unit_machinegun.qc
   trunk/data/qcsrc/server/tturrets/units/unit_mlrs.qc
   trunk/data/qcsrc/server/tturrets/units/unit_plasma.qc
   trunk/data/qcsrc/server/tturrets/units/unit_tessla.qc
   trunk/data/qcsrc/server/tturrets/units/unit_walker.qc
   trunk/data/unit_flac.cfg
   trunk/data/unit_machinegun.cfg
   trunk/data/unit_mlrs.cfg
   trunk/data/unit_phaser.cfg
   trunk/data/unit_plasma.cfg
   trunk/data/unit_plasma2.cfg
   trunk/data/vehicle_spiderbot.cfg
Log:
Turrets update:
 * slight adjustments to turret_stdproc_aim_generic
 * make TFL_FIRECHECK_VERIFIED work a lil better
 * fix borked TFL_FIRECHECK_AIMDIST
 * add TFL_TARGETSELECT_MISSILESONLY (for flac turret)
 * handle g_turrets_targetscan_maxdelay / g_turrets_targetscan_mindelay better
 * various optimizations (removed / moved unlikely stuff from the code path)
 * cleaned up most the code a bit
 * reworked most units configs 
 * Make tessla work against vehicles

Modified: trunk/data/qcsrc/server/tturrets/include/turrets_early.qh
===================================================================
--- trunk/data/qcsrc/server/tturrets/include/turrets_early.qh	2009-09-08 07:16:46 UTC (rev 7685)
+++ trunk/data/qcsrc/server/tturrets/include/turrets_early.qh	2009-09-08 10:48:35 UTC (rev 7686)
@@ -64,6 +64,8 @@
 /// Use feild of view
 #define TFL_TARGETSELECT_FOV           4096
 
+#define TFL_TARGETSELECT_MISSILESONLY  8192
+
 /// aim flags
 .float aim_flags;
 /// Dont aim.

Modified: trunk/data/qcsrc/server/tturrets/system/system_aimprocs.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/system/system_aimprocs.qc	2009-09-08 07:16:46 UTC (rev 7685)
+++ trunk/data/qcsrc/server/tturrets/system/system_aimprocs.qc	2009-09-08 10:48:35 UTC (rev 7686)
@@ -26,15 +26,16 @@
 
     // Keep track of when we can shoot the next time and
     // try to predict where the target will be then, so we can put our aimpoint there.
-    // + sys_ticrate for non hitscan, becouse spawned
+    // + sys_ticrate, becouse spawned REMOVE THIS IF sv_gameplayfix_delayprojectiles are 0!
     // projectiles dont move during the first tic of their life.
-    if (self.turrcaps_flags & TFL_TURRCAPS_HITSCAN)
-        mintime = max(self.attack_finished_single - time,0);
-    else
-        mintime = max(self.attack_finished_single - time,0) + sys_ticrate;
+    //if (self.turrcaps_flags & TFL_TURRCAPS_HITSCAN)
+    //    mintime = max(self.attack_finished_single - time,0) + sys_ticrate;
+    //else
 
+    mintime = max(self.attack_finished_single - time,0) + sys_ticrate;
+
     // Baseline
-    pre_pos = real_origin(self.enemy);// + (self.enemy.velocity * mintime);
+    pre_pos = real_origin(self.enemy);
 
     if (self.aim_flags & TFL_AIM_INFRONT)   // Aim a bit in front of the target
         pre_pos = pre_pos + (normalize(self.enemy.velocity) * 64);
@@ -47,8 +48,6 @@
     if (self.aim_flags & TFL_AIM_SHOTTIMECOMPENSATE)       // Need to conpensate for shot traveltime
     {
         // FIXME: this cant be the best way to do this..
-
-
         prep = pre_pos;
         for(i = 0; i < 4; ++i)
         {
@@ -84,8 +83,6 @@
                 prep_z = prep_z + vz * sys_ticrate;
             }
         }
-
-
         pre_pos = prep;
     }
     else
@@ -104,7 +101,8 @@
 
     if(self.aim_flags & TFL_AIM_GROUND2)
     {
-        tracebox(pre_pos + '0 0 32',self.enemy.mins,self.enemy.maxs,pre_pos -'0 0 64',MOVE_WORLDONLY,self.enemy);
+        //tracebox(pre_pos + '0 0 32',self.enemy.mins,self.enemy.maxs,pre_pos -'0 0 64',MOVE_WORLDONLY,self.enemy);
+        traceline(pre_pos + '0 0 32',pre_pos -'0 0 64',MOVE_WORLDONLY,self.enemy);
         if(trace_fraction != 1.0)
             pre_pos = trace_endpos;
     }

Modified: trunk/data/qcsrc/server/tturrets/system/system_main.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/system/system_main.qc	2009-09-08 07:16:46 UTC (rev 7685)
+++ trunk/data/qcsrc/server/tturrets/system/system_main.qc	2009-09-08 10:48:35 UTC (rev 7686)
@@ -129,21 +129,31 @@
     self.tur_dist_enemy  = vlen(self.tur_shotorg - enemy_pos);
     self.tur_dist_aimpos = vlen(self.tur_shotorg - self.tur_aimpos);
 
-    if(self.firecheck_flags & TFL_FIRECHECK_VERIFIED)
-    if(self.enemy)
+    if((self.firecheck_flags & TFL_FIRECHECK_VERIFIED) && (self.enemy))
     {
         oldpos = self.enemy.origin;
         setorigin(self.enemy,self.tur_aimpos);
         tracebox(self.tur_shotorg, '-1 -1 -1','1 1 1',self.tur_shotorg + (self.tur_shotdir_updated * self.tur_dist_aimpos),MOVE_NORMAL,self);
         setorigin(self.enemy,oldpos);
+
+        if(trace_ent == self.enemy)
+            self.tur_dist_impact_to_aimpos = 0;
+        else
+            self.tur_dist_impact_to_aimpos = vlen(trace_endpos - self.tur_aimpos);// - (vlen(self.enemy.maxs - self.enemy.mins)*0.5);
+
+        self.tur_impactent             = trace_ent;
+        self.tur_impacttime            = vlen(self.tur_shotorg - trace_endpos) / self.shot_speed;
+
     }
     else
         tracebox(self.tur_shotorg, '-1 -1 -1','1 1 1',self.tur_shotorg + (self.tur_shotdir_updated * self.tur_dist_aimpos),MOVE_NORMAL,self);
+        //traceline(self.tur_shotorg, self.tur_shotorg + (self.tur_shotdir_updated * self.tur_dist_aimpos),MOVE_NORMAL,self);
 
-    self.tur_impactent             = trace_ent;
-    self.tur_dist_impact_to_aimpos = vlen(trace_endpos - self.tur_aimpos) - (vlen(self.enemy.maxs - self.enemy.mins)*0.5);
-    self.tur_impacttime            = vlen(self.tur_shotorg - trace_endpos) / self.shot_speed;
+        self.tur_dist_impact_to_aimpos = vlen(trace_endpos - self.tur_aimpos) - (vlen(self.enemy.maxs - self.enemy.mins)*0.5);
+        self.tur_impactent             = trace_ent;
+        self.tur_impacttime            = vlen(self.tur_shotorg - trace_endpos) / self.shot_speed;
 
+
     self = oldself;
 }
 
@@ -418,10 +428,11 @@
 
     // aim<->predicted impact
     if (self.firecheck_flags & TFL_FIRECHECK_AIMDIST)
-        if (self.tur_dist_impact_to_aimpos  > self.aim_firetolerance_dist)
-            if (self.tur_impactent != self.enemy)
-                return 0;
+        if (self.tur_dist_impact_to_aimpos > self.aim_firetolerance_dist)
+            return 0;
 
+        //if (self.tur_impactent != self.enemy)
+
     // Volly status
     if (self.shot_volly > 1)
         if (self.volly_counter == self.shot_volly)
@@ -465,7 +476,7 @@
     if not(checkpvs(e_target.origin, e_turret))
         return -1;
 
-    if (!e_target)// == world)
+    if not (e_target)
         return -2;
 
 	if(g_onslaught)
@@ -504,6 +515,10 @@
         if not (validate_flags & TFL_TARGETSELECT_MISSILES)
             return -10;
 
+    if (validate_flags & TFL_TARGETSELECT_MISSILESONLY)
+        if not (e_target.flags & FL_PROJECTILE)
+            return -10.5;
+
     // Team check
     if (validate_flags & TFL_TARGETSELECT_TEAMCHECK)
     {
@@ -609,6 +624,8 @@
         e_enemy = self.enemy;
         m_score = self.turret_score_target(self,e_enemy) * self.target_select_samebias;
     }
+    else
+        self.enemy = world;
 
     e = findradius(self.origin,self.target_range);
 
@@ -657,26 +674,6 @@
             turret_stdproc_respawn();
     }
 
-
-    if (cvar("g_turrets_reloadcvars") == 1)
-    {
-        e = nextent(world);
-        while (e)
-        {
-            if (e.tur_head != world)
-            {
-
-                load_unit_settings(e,e.cvar_basename,1);
-                if(e.turret_postthink)
-                    e.turret_postthink();
-            }
-
-            e = nextent(e);
-        }
-
-        cvar_set("g_turrets_reloadcvars","0");
-    }
-
 #ifdef TURRET_DEBUG
     if (self.tur_dbg_tmr1 < time)
     {
@@ -700,12 +697,14 @@
         return;
     }
 
-    //This is just wrong :|
+    //This is just wrong :| and unlikely to ever happen.
+    /*
     if(self.deadflag != DEAD_NO)
     {
         dprint("WARNING: dead turret running the think function!\n");
         return;
     }
+    */
 
     // This is typicaly used for zaping every target in range
     // turret_fusionreactor uses this to recharge friendlys.
@@ -732,8 +731,6 @@
         }
         self.enemy = world;
     }
-    /*
-    // not used
     else if(self.shoot_flags & TFL_SHOOT_CUSTOM)
     {
         // This one is doing something.. oddball. assume its handles what needs to be handled.
@@ -752,7 +749,6 @@
         if (self.turret_firecheckfunc())
             turret_fire();
     }
-    */
     else
     {
         // Special case for volly always. if it fired once it must compleate the volly.
@@ -780,15 +776,24 @@
             }
 
         // Check if we have a vailid enemy, and try to find one if we dont.
-        if( ((self.target_select_time + cvar("g_turrets_targetscan_maxdelay")) < time)
-		  || !self.enemy.takedamage
-          || (turret_validate_target(self,self.enemy,self.target_validate_flags) <= 0) )
-        if not (self.target_select_time + cvar("g_turrets_targetscan_mindelay") > time)
+
+        // g_turrets_targetscan_maxdelay forces a target re-scan this often
+        float do_target_scan;
+        if((self.target_select_time + cvar("g_turrets_targetscan_maxdelay")) < time)
+            do_target_scan = 1;
+
+        // Old target (if any) invalid?
+        if (turret_validate_target(self,self.enemy,self.target_validate_flags) <= 0)
+            do_target_scan = 1;
+
+        // But never more often then g_turrets_targetscan_mindelay!
+        if (self.target_select_time + cvar("g_turrets_targetscan_mindelay") > time)
+            do_target_scan = 0;
+
+        if(do_target_scan)
         {
             self.enemy = turret_select_target();
-            //if(self.enemy)
-                self.target_select_time = time;
-
+            self.target_select_time = time;
         }
 
         // No target, just go to idle, do any custom stuff and bail.
@@ -817,6 +822,7 @@
             turret_stdproc_track();
 
         turret_do_updates(self);
+
         // Fire?
         if (self.turret_firecheckfunc())
             turret_fire();
@@ -832,14 +838,21 @@
     if (cvar("g_turrets_nofire") != 0)
         return;
 
-    if ((!self.tur_active) || (self.deadflag != DEAD_NO))
+    /*
+    // unlikely to ever happen.
+    if (self.deadflag != DEAD_NO)
         return;
 
+    if not (self.tur_active)
+        return;
+    */
+
     self.turret_firefunc();
 
     self.attack_finished_single = time + self.shot_refire;
-    self.ammo                   = self.ammo - self.shot_dmg;
-    self.volly_counter          = self.volly_counter - 1;
+    self.ammo -= self.shot_dmg;
+    self.volly_counter = self.volly_counter - 1;
+
     if (self.volly_counter <= 0)
     {
         self.volly_counter = self.shot_volly;
@@ -885,7 +898,30 @@
     self.think      = turret_think;
     self.nextthink  = time;
 }
+void turrets_manager_think()
+{
+    self.nextthink = time + 1;
 
+    entity e;
+    if (cvar("g_turrets_reloadcvars") == 1)
+    {
+        e = nextent(world);
+        while (e)
+        {
+            if (e.tur_head != world)
+            {
+
+                load_unit_settings(e,e.cvar_basename,1);
+                if(e.turret_postthink)
+                    e.turret_postthink();
+            }
+
+            e = nextent(e);
+        }
+        cvar_set("g_turrets_reloadcvars","0");
+    }
+}
+
 /*
 * Standard turret initialization. use this!
 * (unless you have a very good reason not to)
@@ -895,6 +931,16 @@
 {
 	entity e,ee;
 
+    e = find(world, classname, "turret_manager");
+    if not (e)
+    {
+        e = spawn();
+        e.classname = "turret_manager";
+        e.think = turrets_manager_think;
+        e.nextthink = time + 2;
+    }
+
+
     if(csqc_shared)
     {
         dprint("turrets: csqc_shared requested but not implemented. expect strange things to happen.\n");
@@ -930,7 +976,7 @@
         if (!self.team)
             self.team = 14; // Assume turrets are on the defending side if not explicitly set otehrwize
     }
-    else if (!teamplay)
+    else if not (teamplay)
 		self.team = MAX_SHOT_DISTANCE; // Group all turrets into the same team iso they dont kill eachother.
 	else if(g_onslaught && self.targetname)
 	{

Modified: trunk/data/qcsrc/server/tturrets/units/unit_ewheel.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/unit_ewheel.qc	2009-09-08 07:16:46 UTC (rev 7685)
+++ trunk/data/qcsrc/server/tturrets/units/unit_ewheel.qc	2009-09-08 10:48:35 UTC (rev 7686)
@@ -25,7 +25,7 @@
     entity proj;
     float i;
 
-    for (i=0;i<1;++i)
+    for (i = 0; i < 1; ++i)
     {
         turret_do_updates(self);
 
@@ -34,8 +34,6 @@
 
         proj                    = spawn ();
         setorigin(proj, self.tur_shotorg);
-        //setsize(proj, '-0.5 -0.5 -0.5', '0.5 0.5 0.5');
-        //setmodel(proj, "models/laser.mdl"); // precision set above
         proj.classname       = "ewheel bolt";
         proj.owner           = self;
         proj.bot_dodge       = FALSE;
@@ -45,9 +43,8 @@
         proj.solid           = SOLID_BBOX;
         proj.movetype        = MOVETYPE_FLYMISSILE;
         proj.velocity        = normalize(self.tur_shotdir_updated + randomvec() * self.shot_spread) * self.shot_speed;
-        proj.angles          = vectoangles(proj.velocity);
+        //proj.angles          = vectoangles(proj.velocity);
         proj.touch           = turret_ewheel_projectile_explode;
-        //proj.effects         = EF_LOWPRECISION |  EF_BRIGHTFIELD;
         proj.enemy           = self.enemy;
         proj.flags           = FL_PROJECTILE | FL_NOTARGET;
 
@@ -135,6 +132,7 @@
 
         if (self.pathcurrent)
         {
+            /*
             switch (self.waterlevel)
             {
             case 0:
@@ -142,6 +140,7 @@
             case 2:
             case 3:
             }
+            */
 
             self.moveto = self.pathcurrent.origin;
             self.steerto = steerlib_attract2(self.moveto,0.5,500,0.95);
@@ -358,59 +357,6 @@
 
 }
 
-/*
-float test_stack_1(float eval)
-{
-    switch (eval)
-    {
-    case VCM_EVAL:
-        return verb.verb_static_value;
-
-    case VCM_DO:
-        dprint("test_stack_1\n");
-        return VS_CALL_REMOVE;
-    }
-
-    return VS_CALL_REMOVE;
-}
-
-float test_stack_2(float eval)
-{
-    switch (eval)
-    {
-    case VCM_EVAL:
-        return verb.verb_static_value;
-
-    case VCM_DO:
-        dprint("test_stack_2\n");
-        return VS_CALL_REMOVE;
-    }
-
-    return VS_CALL_REMOVE;
-}
-
-float ccnntt;
-float test_stack_3(float eval)
-{
-    switch (eval)
-    {
-    case VCM_EVAL:
-        return verb.verb_static_value;
-
-    case VCM_DO:
-        dprint("test_stack_3\n");
-        ++ccnntt;
-        if(ccnntt > 3)
-            return VS_CALL_REMOVE;
-        else
-            return VS_CALL_YES_DONE;
-    }
-
-    return VS_CALL_YES_DONE;
-}
-
-.entity test_stack;
-*/
 void turret_ewheel_dinit()
 {
     entity e;
@@ -434,7 +380,6 @@
 
     self.ammo_flags = TFL_AMMO_ENERGY | TFL_AMMO_RECHARGE | TFL_AMMO_RECIVE;
     self.turrcaps_flags = TFL_TURRCAPS_PLAYERKILL | TFL_TURRCAPS_MOVE | TFL_TURRCAPS_ROAM | TFL_TURRCAPS_HEADATTACHED;
-    //self.aim_flags = TFL_AIM_SIMPLE;// TFL_AIM_LEAD | TFL_AIM_ZEASE;
 
     self.turret_respawnhook = ewheel_respawnhook;
     self.turret_diehook = ewheel_diehook;
@@ -475,16 +420,6 @@
     verbstack_push(self.verbs_move, ewheel_moveverb_path,   WVM_PATH,  0, self);
     //verbstack_push(self.verbs_move, ewheel_moveverb_runaway,WVM_PANIC,  0, self);
 
-    /*
-    self.test_stack = spawn();
-    verbstack_push(self.test_stack, test_stack_1,1,  0, self);
-    verbstack_push(self.test_stack, test_stack_2,2,  0, self);
-    verbstack_push(self.test_stack, test_stack_3,100,0, self);
-    while(verbstack_popfifo(self.test_stack) != 0)
-    */
-
-
-
     // Convert from dgr / sec to dgr / tic
     self.tur_head.aim_speed = cvar("g_turrets_unit_ewheel_turnrate");
     self.tur_head.aim_speed = self.tur_head.aim_speed / (1 / self.ticrate);

Modified: trunk/data/qcsrc/server/tturrets/units/unit_flac.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/unit_flac.qc	2009-09-08 07:16:46 UTC (rev 7685)
+++ trunk/data/qcsrc/server/tturrets/units/unit_flac.qc	2009-09-08 10:48:35 UTC (rev 7686)
@@ -12,7 +12,6 @@
     sound (self, CHAN_WEAPON, "weapons/hagar_fire.wav", VOL_BASE, ATTN_NORM);
     proj = spawn ();
     setorigin(proj, self.tur_shotorg);
-    // setmodel(proj, "models/turrets/pd_proj.md3");
     setsize(proj, '0 0 0', '0 0 0');
     proj.classname          = "flac_projectile";
     proj.owner              = self;
@@ -21,14 +20,11 @@
     proj.solid              = SOLID_BBOX;
     proj.movetype           = MOVETYPE_FLYMISSILE;
     proj.flags              = FL_PROJECTILE;
-    // proj.effects            = EF_LOWPRECISION;
     proj.takedamage         = DAMAGE_NO;
-    //proj.health             =  100;
     proj.velocity           = normalize(self.tur_shotdir_updated + randomvec() * self.shot_spread) * self.shot_speed;
     proj.angles             = vectoangles(proj.velocity);
     proj.touch              = turret_flac_projectile_explode;
     proj.think              = turret_flac_projectile_explode;
-    //proj.nextthink          = time + vlen(self.tur_shotorg - self.enemy.origin) / self.shot_speed;
     proj.nextthink          = time + max(self.tur_impacttime,(self.shot_radius * 3) / self.shot_speed);
     proj.enemy              = self.enemy;
     proj.cnt                = time + 5;
@@ -89,7 +85,6 @@
 {
     if (self.netname == "")      self.netname  = "FLAC Cannon";
 
-
     self.turrcaps_flags = TFL_TURRCAPS_RADIUSDMG | TFL_TURRCAPS_FASTPROJ | TFL_TURRCAPS_MISSILEKILL;
     self.ammo_flags     = TFL_AMMO_ROCKETS | TFL_AMMO_RECHARGE;
     self.aim_flags      = TFL_AIM_LEAD | TFL_AIM_SHOTTIMECOMPENSATE;
@@ -102,7 +97,7 @@
     setsize(self.tur_head,'-32 -32 0','32 32 64');
 
     self.damage_flags |= TFL_DMG_HEADSHAKE;
-    self.target_select_flags |= TFL_TARGETSELECT_NOTURRETS;
+    self.target_select_flags |= TFL_TARGETSELECT_NOTURRETS | TFL_TARGETSELECT_MISSILESONLY;
 
     if (!turret_tag_setup())
         dprint("Warning: Turret ",self.classname, " faild to initialize md3 tags\n");
@@ -118,7 +113,6 @@
 {
     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/unit_fusionreactor.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/unit_fusionreactor.qc	2009-09-08 07:16:46 UTC (rev 7685)
+++ trunk/data/qcsrc/server/tturrets/units/unit_fusionreactor.qc	2009-09-08 10:48:35 UTC (rev 7686)
@@ -17,7 +17,6 @@
     return 1;
 }
 
-
 void turret_fusionreactor_fire()
 {
     self.enemy.ammo = min(self.enemy.ammo + self.shot_dmg,self.enemy.ammo_max);

Modified: trunk/data/qcsrc/server/tturrets/units/unit_hellion.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/unit_hellion.qc	2009-09-08 07:16:46 UTC (rev 7685)
+++ trunk/data/qcsrc/server/tturrets/units/unit_hellion.qc	2009-09-08 10:48:35 UTC (rev 7686)
@@ -29,6 +29,9 @@
 
     sound (self, CHAN_WEAPON, "weapons/hagar_fire.wav", VOL_BASE, ATTN_NORM);
 
+    // switch tubes
+    //self.tur_shotorg_y = self.tur_shotorg_y * -1;
+
     missile = spawn ();
     setorigin(missile, self.tur_shotorg);
     setsize (missile, '-3 -3 -3', '3 3 3'); // give it some size so it can be shot
@@ -57,9 +60,6 @@
 
 	CSQCProjectile(missile, FALSE, PROJECTILE_ROCKET, FALSE); // no culling, has fly sound
 
-    // switch tubes
-    self.tur_shotorg_y = self.tur_shotorg_y * -1;
-
     if (self.tur_head.frame == 0)
         self.tur_head.frame = self.tur_head.frame + 1;
 
@@ -116,8 +116,6 @@
 
     pre_pos = (pre_pos + self.enemy.origin) * 0.5;
 
-    //pre_pos += randomvec() * 128; //self.tur_aimpos * (sin(32) * time) ;
-
     // Find out the direction to that place
     newdir = normalize(pre_pos - self.origin);
 
@@ -179,12 +177,15 @@
 {
     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 not (self.shot_speed_max)
+        self.shot_speed_max  = cvar("g_turrets_unit_hellion_std_shot_speed_max");
 
+    if not (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;
-    self.target_select_flags = TFL_TARGETSELECT_LOS | TFL_TARGETSELECT_PLAYERS | TFL_TARGETSELECT_TRIGGERTARGET | TFL_TARGETSELECT_RANGELIMTS | TFL_TARGETSELECT_TEAMCHECK ;
+    self.target_select_flags = TFL_TARGETSELECT_LOS | TFL_TARGETSELECT_PLAYERS | TFL_TARGETSELECT_RANGELIMTS | TFL_TARGETSELECT_TEAMCHECK ;
     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;
 
@@ -197,10 +198,7 @@
     if (!turret_tag_setup())
         dprint("Warning: Turret ",self.classname, " faild to initialize md3 tags\n");
 
-    // Our fire routine
     self.turret_firefunc  = turret_hellion_attack;
-
-    // Custom animations and sutch
     self.turret_postthink = turret_hellion_postthink;
 }
 
@@ -208,7 +206,6 @@
 */
 void spawnfunc_turret_hellion()
 {
-    //precache_model ( "models/turrets/mlrs_rocket.md3");
     precache_model ("models/turrets/hellion.md3");
     precache_model ("models/turrets/base.md3");
 

Modified: trunk/data/qcsrc/server/tturrets/units/unit_hk.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/unit_hk.qc	2009-09-08 07:16:46 UTC (rev 7685)
+++ trunk/data/qcsrc/server/tturrets/units/unit_hk.qc	2009-09-08 10:48:35 UTC (rev 7686)
@@ -122,25 +122,6 @@
 
 }
 
-/*
-void turret_hk_missile_touch()
-{
-    if(other == self.enemy)
-        turret_hk_missile_explode();
-    else
-    {
-        if(self.cnt < time)
-        {
-            self.cnt = time + 0.25;
-            self.health = self.health - 5;
-            if(self.health <= 0)
-                turret_hk_missile_explode();
-
-        }
-    }
-}
-*/
-
 void turret_hk_missile_think()
 {
     vector vu, vd, vf, vl, vr, ve;  // Vector (direction)
@@ -291,7 +272,6 @@
             myspeed = min(myspeed * hk_accel2,hk_maxspeed);
 
         wishdir = ve;
-        //wishdir = normalize(self.enemy.origin - (self.enemy.origin + self.enemy.velocity));
     }
 
     if ((myspeed > hk_minspeed) && (self.cnt > time))
@@ -309,13 +289,8 @@
 
     // Calculate new heading
     olddir = normalize(self.velocity);
-
     newdir = normalize(olddir + wishdir * cvar("g_turrets_unit_hk_std_shot_speed_turnrate"));
 
-    //fu = (1 / hk_maxspeed) * myspeed;
-    //fd = fu - (0.75 - 0.25);
-    //newdir = normalize(olddir + wishdir * fd);
-
     // Set heading & speed
     self.velocity = newdir * myspeed;
 
@@ -455,19 +430,15 @@
     self.turret_addtarget = turret_hk_addtarget;
 }
 
-/*
+
+/*QUAKED turret_hk (0 .5 .8) ?
 * Turret that fires Hunter-killer missiles.
 * Missiles seek their target and try to avoid obstacles. If target dies early, they
 * pick a new one on their own.
 */
 
-/*QUAKED turret_hk (0 .5 .8) ?
-hunter-killer missiles.
-*/
-
 void spawnfunc_turret_hk()
 {
-    //precache_model ( "models/turrets/hunter2.md3");
     precache_model ("models/turrets/base.md3");
     precache_model ("models/turrets/hk.md3");
 

Modified: trunk/data/qcsrc/server/tturrets/units/unit_machinegun.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/unit_machinegun.qc	2009-09-08 07:16:46 UTC (rev 7685)
+++ trunk/data/qcsrc/server/tturrets/units/unit_machinegun.qc	2009-09-08 10:48:35 UTC (rev 7686)
@@ -13,11 +13,9 @@
 
     //w_deathtypestring = "had an alergic reaction due to 10 kilos of led";
     te_smallflash(self.tur_shotorg);
-    //  trailparticles(self,particleeffectnum("EF_MGTURRETTRAIL"),self.tur_shotorg_updated,trace_endpos);
 
     // muzzle flash for 3rd person view
     flash = spawn();
-    //setorigin(flash, '43 1 8');
     setmodel(flash, "models/uziflash.md3"); // precision set below
     setattachment(flash, self.tur_head, "tag_fire");
     flash.think = W_Uzi_Flash_Go;
@@ -34,7 +32,7 @@
     if (self.netname == "")      self.netname     = "Machinegun Turret";
 
     self.ammo_flags = TFL_AMMO_BULLETS | TFL_AMMO_RECHARGE | TFL_AMMO_RECIVE;
-    self.turrcaps_flags = TFL_TURRCAPS_PLAYERKILL;// | TFL_TURRCAPS_MISSILEKILL;
+    self.turrcaps_flags = TFL_TURRCAPS_PLAYERKILL;
     self.aim_flags = TFL_AIM_LEAD;
 
     if(cvar("g_antilag_bullets"))
@@ -59,13 +57,9 @@
 }
 
 
-
-/*
+/*QUAKED turret_machinegun (0 .5 .8) ?
 * machinegun turret. does what you'd expect
 */
-
-/*QUAKED turret_machinegun (0 .5 .8) ?
-*/
 void spawnfunc_turret_machinegun()
 {
     precache_model ("models/turrets/machinegun.md3");

Modified: trunk/data/qcsrc/server/tturrets/units/unit_mlrs.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/unit_mlrs.qc	2009-09-08 07:16:46 UTC (rev 7685)
+++ trunk/data/qcsrc/server/tturrets/units/unit_mlrs.qc	2009-09-08 10:48:35 UTC (rev 7686)
@@ -20,7 +20,6 @@
     sound (self, CHAN_WEAPON, "weapons/rocket_fire.wav", VOL_BASE, ATTN_NORM);
 
     missile                    = spawn ();
-    //setsize (missile, '0 0 0', '0 0 0'); // give it some size so it can be shot
     setsize (missile, '-3 -3 -3', '3 3 3'); // give it some size so it can be shot
     setorigin(missile, self.tur_shotorg);
     missile.classname          = "mlrs_missile";
@@ -29,12 +28,8 @@
     missile.bot_dodgerating    = self.shot_dmg;
     missile.takedamage         = DAMAGE_NO;
     missile.damageforcescale   = 4;
-    //missile.health             = 25;
     missile.think              = turret_mlrs_rocket_explode;
-
     missile.nextthink          = time + max(self.tur_impacttime,(self.shot_radius * 2) / self.shot_speed);
-    //missile.nextthink          = missile.nextthink + random() * self.shot_spread;
-
     missile.solid              = SOLID_BBOX;
     missile.movetype           = MOVETYPE_FLYMISSILE;
     missile.velocity           = normalize(self.tur_shotdir_updated + randomvec() * self.shot_spread) * self.shot_speed;
@@ -47,8 +42,6 @@
 	CSQCProjectile(missile, TRUE, PROJECTILE_ROCKET, FALSE); // no cull, fly sound
 
     te_explosion (missile.origin);
-
-    //self.tur_head.frame = 7 - self.volly_counter;
 }
 
 void turret_mlrs_rocket_touch()
@@ -101,7 +94,7 @@
 
     self.turrcaps_flags = TFL_TURRCAPS_RADIUSDMG | TFL_TURRCAPS_MEDPROJ | TFL_TURRCAPS_PLAYERKILL;
     self.ammo_flags = TFL_AMMO_ROCKETS | TFL_AMMO_RECHARGE;
-    self.aim_flags = TFL_AIM_LEAD | TFL_AIM_ZEASE | TFL_AIM_SHOTTIMECOMPENSATE | TFL_AIM_INFRONT;
+    self.aim_flags = TFL_AIM_LEAD | TFL_AIM_SHOTTIMECOMPENSATE;// | TFL_AIM_GROUND2;
 
     if (turret_stdproc_init("mlrs_std",0,"models/turrets/base.md3","models/turrets/mlrs.md3") == 0)
     {
@@ -110,8 +103,7 @@
     }
 
     self.damage_flags |= TFL_DMG_HEADSHAKE;
-
-    self.shoot_flags |= TFL_SHOOT_VOLLYALWAYS;
+    self.shoot_flags  |= TFL_SHOOT_VOLLYALWAYS;
     self.volly_counter = self.shot_volly;
 
     if (!turret_tag_setup())
@@ -128,7 +120,6 @@
 
 void spawnfunc_turret_mlrs()
 {
-    //precache_model ( "models/turrets/rocket.md3");
     precache_model ("models/turrets/mlrs.md3");
     precache_model ("models/turrets/base.md3");
 

Modified: trunk/data/qcsrc/server/tturrets/units/unit_plasma.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/unit_plasma.qc	2009-09-08 07:16:46 UTC (rev 7685)
+++ trunk/data/qcsrc/server/tturrets/units/unit_plasma.qc	2009-09-08 10:48:35 UTC (rev 7686)
@@ -44,7 +44,6 @@
     proj.solid           = SOLID_BBOX;
     proj.movetype        = MOVETYPE_FLYMISSILE;
     proj.velocity        = normalize(self.tur_shotdir_updated + randomvec() * self.shot_spread) * self.shot_speed;
-    //proj.velocity        = self.tur_shotdir_updated  * self.shot_speed;
     proj.touch           = turret_plasma_projectile_explode;
     proj.flags           = FL_PROJECTILE;
     proj.enemy           = self.enemy;
@@ -73,7 +72,6 @@
     proj.solid           = SOLID_BBOX;
     proj.movetype        = MOVETYPE_FLYMISSILE;
     proj.velocity        = normalize(self.tur_shotdir_updated + randomvec() * self.shot_spread) * self.shot_speed;
-    //proj.velocity        = self.tur_shotdir_updated  * self.shot_speed;
     proj.touch           = turret_plasma_projectile_explode;
     proj.flags           = FL_PROJECTILE;
     proj.enemy           = self.enemy;
@@ -123,7 +121,6 @@
     self.ammo_flags = TFL_AMMO_ENERGY | TFL_AMMO_RECHARGE | TFL_AMMO_RECIVE;
 
     // How to aim
-    //self.aim_flags = TFL_AIM_LEAD | TFL_AIM_SHOTTIMECOMPENSATE | TFL_AIM_ZPREDICT | TFL_AIM_GROUND2;
     self.aim_flags      = TFL_AIM_LEAD | TFL_AIM_SHOTTIMECOMPENSATE | TFL_AIM_GROUND2;
     self.turrcaps_flags = TFL_TURRCAPS_RADIUSDMG | TFL_TURRCAPS_MEDPROJ | TFL_TURRCAPS_PLAYERKILL | TFL_TURRCAPS_MISSILEKILL;
 
@@ -134,17 +131,8 @@
     }
 
     self.damage_flags    |= TFL_DMG_HEADSHAKE;
-
-    //self.firecheck_flags |= (TFL_FIRECHECK_AFF | TFL_FIRECHECK_VERIFIED);
     self.firecheck_flags |= TFL_FIRECHECK_AFF;
 
-    //self.target_select_flags |= TFL_TARGETSELECT_FOV;
-    //self.target_select_fov    = 45;
-
-    //setmodel(self,"models/turrets/base.md3");
-    //setmodel(self.tur_head,"models/turrets/plasma.md3");
-    // self.tur_head.alpha = -1;
-
     if (!turret_tag_setup())
         dprint("Warning: Turret ",self.classname, " faild to initialize md3 tags\n");
 
@@ -175,13 +163,8 @@
     }
 
     self.damage_flags    |= TFL_DMG_HEADSHAKE;
-    //self.firecheck_flags |= (TFL_FIRECHECK_AFF | TFL_FIRECHECK_VERIFIED);
-    //self.firecheck_flags |= TFL_FIRECHECK_AFF;
+    self.firecheck_flags |= TFL_FIRECHECK_AFF;
 
-    //setmodel(self,"models/turrets/base.md3");
-    //setmodel(self.tur_head,"models/turrets/plasmad.md3");
-
-
     if (!turret_tag_setup())
         dprint("Warning: Turret ",self.classname, " faild to initialize md3 tags\n");
 

Modified: trunk/data/qcsrc/server/tturrets/units/unit_tessla.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/unit_tessla.qc	2009-09-08 07:16:46 UTC (rev 7685)
+++ trunk/data/qcsrc/server/tturrets/units/unit_tessla.qc	2009-09-08 10:48:35 UTC (rev 7686)
@@ -8,6 +8,7 @@
     entity e;
     entity etarget;
     float d,dd;
+    float r;
 
     dd = range + 1;
 
@@ -15,9 +16,11 @@
     while (e)
     {
         if ((e.toasted != 1) && (e != from))
-            if (turret_validate_target(self,e,self.target_validate_flags) > 0)
+        {
+            r = turret_validate_target(self,e,self.target_validate_flags);
+            if (r > 0)
             {
-                traceline(from.origin,e.origin,MOVE_WORLDONLY,from);
+                traceline(from.origin,0.5 * (e.absmin + e.absmax),MOVE_WORLDONLY,from);
                 if (trace_fraction == 1.0)
                 {
                     d = vlen(e.origin - from.origin);
@@ -28,6 +31,8 @@
                     }
                 }
             }
+        }
+
         e = e.chain;
     }
 
@@ -83,6 +88,8 @@
     self.target_validate_flags = TFL_TARGETSELECT_PLAYERS | TFL_TARGETSELECT_MISSILES |
                                  TFL_TARGETSELECT_TEAMCHECK;
 
+
+
     self.attack_finished_single = time + self.shot_refire;
     for (i = 0; i < 10; ++i)
     {
@@ -150,8 +157,6 @@
         return;
     }
     setsize(self,'-48 -48 0','48 48 96');
-    //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;

Modified: trunk/data/qcsrc/server/tturrets/units/unit_walker.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/unit_walker.qc	2009-09-08 07:16:46 UTC (rev 7685)
+++ trunk/data/qcsrc/server/tturrets/units/unit_walker.qc	2009-09-08 10:48:35 UTC (rev 7686)
@@ -866,8 +866,6 @@
     entity e;
 
     self.origin = self.wkr_spawn.origin;
-    //self.wkr_props.solid = SOLID_BBOX;
-    //self.wkr_props.alpha = 1;
 
     self.angles = self.wkr_spawn.angles;
     vtmp = self.wkr_spawn.origin;
@@ -967,8 +965,6 @@
     self.solid      = SOLID_SLIDEBOX;
     self.takedamage = DAMAGE_AIM;
 
-    //setmodel(self,"models/turrets/walker_body.md3");
-    //setmodel(self.tur_head,"models/turrets/walker_head_minigun.md3");
     setmodel(self.wkr_spawn,"models/turrets/walker_spawn.md3");
 
     setattachment(self.tur_head,self,"tag_head");

Modified: trunk/data/unit_flac.cfg
===================================================================
--- trunk/data/unit_flac.cfg	2009-09-08 07:16:46 UTC (rev 7685)
+++ trunk/data/unit_flac.cfg	2009-09-08 10:48:35 UTC (rev 7686)
@@ -4,11 +4,9 @@
 set g_turrets_unit_flac_std_shot_dmg 20
 set g_turrets_unit_flac_std_shot_refire 0.1
 set g_turrets_unit_flac_std_shot_radius 100
-set g_turrets_unit_flac_std_shot_speed 2000
+set g_turrets_unit_flac_std_shot_speed 9000
 set g_turrets_unit_flac_std_shot_spread 0.02
 set g_turrets_unit_flac_std_shot_force 25
-set g_turrets_unit_flac_std_shot_volly 0
-set g_turrets_unit_flac_std_shot_volly_refire 0
 
 set g_turrets_unit_flac_std_target_range 4000
 set g_turrets_unit_flac_std_target_range_min 500

Modified: trunk/data/unit_machinegun.cfg
===================================================================
--- trunk/data/unit_machinegun.cfg	2009-09-08 07:16:46 UTC (rev 7685)
+++ trunk/data/unit_machinegun.cfg	2009-09-08 10:48:35 UTC (rev 7686)
@@ -7,9 +7,10 @@
 set g_turrets_unit_machinegun_std_shot_force 20
 set g_turrets_unit_machinegun_std_shot_radius 0
 set g_turrets_unit_machinegun_std_shot_speed 34920
-set g_turrets_unit_machinegun_std_shot_volly 6
-set g_turrets_unit_machinegun_std_shot_volly_refire 1
 
+set g_turrets_unit_machinegun_std_shot_volly 5
+set g_turrets_unit_machinegun_std_shot_volly_refire 0.5
+
 set g_turrets_unit_machinegun_std_target_range 4500
 set g_turrets_unit_machinegun_std_target_range_min 2
 set g_turrets_unit_machinegun_std_target_range_optimal 1000
@@ -24,14 +25,14 @@
 set g_turrets_unit_machinegun_std_ammo 300
 set g_turrets_unit_machinegun_std_ammo_recharge 75
 
-set g_turrets_unit_machinegun_std_aim_firetolerance_dist 70
-set g_turrets_unit_machinegun_std_aim_speed 200
+set g_turrets_unit_machinegun_std_aim_firetolerance_dist 25
+set g_turrets_unit_machinegun_std_aim_speed 720
 set g_turrets_unit_machinegun_std_aim_maxrot 360
 set g_turrets_unit_machinegun_std_aim_maxpitch 25
 
 set g_turrets_unit_machinegun_std_track_type 3
-set g_turrets_unit_machinegun_std_track_accel_pitch 0.25
-set g_turrets_unit_machinegun_std_track_accel_rot 0.8
-set g_turrets_unit_machinegun_std_track_blendrate 0.3
+set g_turrets_unit_machinegun_std_track_accel_pitch 0.5
+set g_turrets_unit_machinegun_std_track_accel_rot 0.75
+set g_turrets_unit_machinegun_std_track_blendrate 0.5
 
 

Modified: trunk/data/unit_mlrs.cfg
===================================================================
--- trunk/data/unit_mlrs.cfg	2009-09-08 07:16:46 UTC (rev 7685)
+++ trunk/data/unit_mlrs.cfg	2009-09-08 10:48:35 UTC (rev 7686)
@@ -1,36 +1,36 @@
 set g_turrets_unit_mlrs_std_health 500
 set g_turrets_unit_mlrs_std_respawntime 60
 
-set g_turrets_unit_mlrs_std_shot_dmg 70
-set g_turrets_unit_mlrs_std_shot_refire 0.2
+set g_turrets_unit_mlrs_std_shot_dmg 50
+set g_turrets_unit_mlrs_std_shot_refire 0.1
 set g_turrets_unit_mlrs_std_shot_radius 125
 set g_turrets_unit_mlrs_std_shot_speed 2000
-set g_turrets_unit_mlrs_std_shot_spread 0.025
+set g_turrets_unit_mlrs_std_shot_spread 0.05
 set g_turrets_unit_mlrs_std_shot_force 25
 
-set g_turrets_unit_mlrs_std_shot_volly 3
-set g_turrets_unit_mlrs_std_shot_volly_refire 2.5
+set g_turrets_unit_mlrs_std_shot_volly 6
+set g_turrets_unit_mlrs_std_shot_volly_refire 1
 
 set g_turrets_unit_mlrs_std_target_range 3000
 set g_turrets_unit_mlrs_std_target_range_min 500
 set g_turrets_unit_mlrs_std_target_range_optimal 500
 
 set g_turrets_unit_mlrs_std_target_select_rangebias 0.25
-set g_turrets_unit_mlrs_std_target_select_samebias 0.25
+set g_turrets_unit_mlrs_std_target_select_samebias 0.5
 set g_turrets_unit_mlrs_std_target_select_anglebias 0.5
 set g_turrets_unit_mlrs_std_target_select_playerbias 1
 set g_turrets_unit_mlrs_std_target_select_missilebias 0
 
 set g_turrets_unit_mlrs_std_ammo_max 420
 set g_turrets_unit_mlrs_std_ammo 420
-set g_turrets_unit_mlrs_std_ammo_recharge 35
+set g_turrets_unit_mlrs_std_ammo_recharge 70
 
-set g_turrets_unit_mlrs_std_aim_firetolerance_dist 125
-set g_turrets_unit_mlrs_std_aim_speed 125
+set g_turrets_unit_mlrs_std_aim_firetolerance_dist 120
+set g_turrets_unit_mlrs_std_aim_speed 270
 set g_turrets_unit_mlrs_std_aim_maxrot 360
-set g_turrets_unit_mlrs_std_aim_maxpitch 15
+set g_turrets_unit_mlrs_std_aim_maxpitch 20
 
 set g_turrets_unit_mlrs_std_track_type 3
-set g_turrets_unit_mlrs_std_track_accel_pitch 0.25
+set g_turrets_unit_mlrs_std_track_accel_pitch 0.5
 set g_turrets_unit_mlrs_std_track_accel_rot 0.8
-set g_turrets_unit_mlrs_std_track_blendrate 0.3
+set g_turrets_unit_mlrs_std_track_blendrate 0.2

Modified: trunk/data/unit_phaser.cfg
===================================================================
--- trunk/data/unit_phaser.cfg	2009-09-08 07:16:46 UTC (rev 7685)
+++ trunk/data/unit_phaser.cfg	2009-09-08 10:48:35 UTC (rev 7686)
@@ -27,12 +27,12 @@
 
 set g_turrets_unit_phaser_std_aim_firetolerance_dist 100
 
-set g_turrets_unit_phaser_std_aim_speed 150
+set g_turrets_unit_phaser_std_aim_speed 540
 set g_turrets_unit_phaser_std_aim_maxrot 360
 set g_turrets_unit_phaser_std_aim_maxpitch 30
 
 set g_turrets_unit_phaser_std_track_type 3
 set g_turrets_unit_phaser_std_track_accel_pitch 0.5
-set g_turrets_unit_phaser_std_track_accel_rot 0.9
-set g_turrets_unit_phaser_std_track_blendrate 0.1
+set g_turrets_unit_phaser_std_track_accel_rot 0.65
+set g_turrets_unit_phaser_std_track_blendrate 0.5
 

Modified: trunk/data/unit_plasma.cfg
===================================================================
--- trunk/data/unit_plasma.cfg	2009-09-08 07:16:46 UTC (rev 7685)
+++ trunk/data/unit_plasma.cfg	2009-09-08 10:48:35 UTC (rev 7686)
@@ -44,9 +44,9 @@
 set g_turrets_unit_plasma_std_ammo_recharge 40
 
 // If predicted emeypos is this or closer to predicted impact, fire is ok
-set g_turrets_unit_plasma_std_aim_firetolerance_dist 100
+set g_turrets_unit_plasma_std_aim_firetolerance_dist 120
 // Aim how fast. for track_type 1 this is dgr/sec, for 2 & 3 its the maximum angle speed added each second
-set g_turrets_unit_plasma_std_aim_speed 200
+set g_turrets_unit_plasma_std_aim_speed 270
 // Max rottation of head
 set g_turrets_unit_plasma_std_aim_maxrot 360
 // Max pitch  of head
@@ -58,7 +58,7 @@
 //   3 = smmoth with simulated inertia
 set g_turrets_unit_plasma_std_track_type 3
 // Following controls how _track_type = 3 works.
-set g_turrets_unit_plasma_std_track_accel_pitch 0.25
+set g_turrets_unit_plasma_std_track_accel_pitch 0.5
 set g_turrets_unit_plasma_std_track_accel_rot 0.8
-set g_turrets_unit_plasma_std_track_blendrate 0.4
+set g_turrets_unit_plasma_std_track_blendrate 0.2
 

Modified: trunk/data/unit_plasma2.cfg
===================================================================
--- trunk/data/unit_plasma2.cfg	2009-09-08 07:16:46 UTC (rev 7685)
+++ trunk/data/unit_plasma2.cfg	2009-09-08 10:48:35 UTC (rev 7686)
@@ -25,14 +25,14 @@
 set g_turrets_unit_plasma_dual_ammo 320
 set g_turrets_unit_plasma_dual_ammo_recharge 40
 
-set g_turrets_unit_plasma_dual_aim_firetolerance_dist 300
+set g_turrets_unit_plasma_dual_aim_firetolerance_dist 200
 
-set g_turrets_unit_plasma_dual_aim_speed 150
+set g_turrets_unit_plasma_dual_aim_speed 270
 set g_turrets_unit_plasma_dual_aim_maxrot 360
 set g_turrets_unit_plasma_dual_aim_maxpitch 30
 
 set g_turrets_unit_plasma_dual_track_type 3
-set g_turrets_unit_plasma_dual_track_accel_pitch 0.25
-set g_turrets_unit_plasma_dual_track_accel_rot 0.8
-set g_turrets_unit_plasma_dual_track_blendrate 0.4
+set g_turrets_unit_plasma_dual_track_accel_pitch 0.5
+set g_turrets_unit_plasma_dual_track_accel_rot 0.75
+set g_turrets_unit_plasma_dual_track_blendrate 0.75
 

Modified: trunk/data/vehicle_spiderbot.cfg
===================================================================
--- trunk/data/vehicle_spiderbot.cfg	2009-09-08 07:16:46 UTC (rev 7685)
+++ trunk/data/vehicle_spiderbot.cfg	2009-09-08 10:48:35 UTC (rev 7686)
@@ -1,6 +1,7 @@
-set g_vehicle_spiderbot_health                   875
-set g_vehicle_spiderbot_health_regen       	 10
-set g_vehicle_spiderbot_health_regen_dmgpause    10
+set g_vehicle_spiderbot_respawntime			30
+set g_vehicle_spiderbot_health                  875
+set g_vehicle_spiderbot_health_regen       	10
+set g_vehicle_spiderbot_health_regen_dmgpause   10
 
 set g_vehicle_spiderbot_shield          125
 set g_vehicle_spiderbot_shield_block    1
@@ -27,6 +28,7 @@
 set g_vehicle_spiderbot_minigun_heat           0.015
 set g_vehicle_spiderbot_minigun_cooldown       0.015
 
+set g_vehicle_spiderbot_rocket_health     100
 set g_vehicle_spiderbot_rocket_damage     75
 set g_vehicle_spiderbot_rocket_edgedamage 15
 set g_vehicle_spiderbot_rocket_force      150
@@ -36,10 +38,10 @@
 set g_vehicle_spiderbot_rocket_speed      900
 set g_vehicle_spiderbot_rocket_turnrate   0.25
 set g_vehicle_spiderbot_rocket_noise      0.25
+set g_vehicle_spiderbot_rocket_lifetime   30
 
 set g_vehicle_spiderbot_crush_dmg         50
 set g_vehicle_spiderbot_crush_force       50
 
-
 set cl_vehicle_spiderbot_cross_alpha 0.4
 set cl_vehicle_spiderbot_cross_size 1



More information about the nexuiz-commits mailing list