[nexuiz-commits] r6576 - in trunk/data/qcsrc/server: . tturrets/units

DONOTREPLY at icculus.org DONOTREPLY at icculus.org
Thu Apr 23 10:18:27 EDT 2009


Author: tzork
Date: 2009-04-23 10:18:27 -0400 (Thu, 23 Apr 2009)
New Revision: 6576

Modified:
   trunk/data/qcsrc/server/tturrets/units/unit_ewheel.qc
   trunk/data/qcsrc/server/tturrets/units/unit_walker.qc
   trunk/data/qcsrc/server/verbstack.qc
Log:
make verb owner a param of verbstack_push.
update ewheel and walker accordingly + some minor tweaks to these two.

Modified: trunk/data/qcsrc/server/tturrets/units/unit_ewheel.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/unit_ewheel.qc	2009-04-23 13:45:02 UTC (rev 6575)
+++ trunk/data/qcsrc/server/tturrets/units/unit_ewheel.qc	2009-04-23 14:18:27 UTC (rev 6576)
@@ -61,6 +61,34 @@
 
 }
 
+float ewheel_moveverb_roam(float eval)
+{
+    switch (eval)
+    {
+    case VCM_EVAL:
+
+        if (!self.enemy)
+            return verb.verb_static_value;
+
+        return VS_CALL_NO;
+
+    case VCM_DO:
+        self.angles_z = 0;
+        makevectors(self.angles);
+        self.moveto = v_forward * 128;
+        self.steerto = steerlib_beamsteer(v_forward,1024,32,36,128);
+        self.frame += 1;
+        movelib_move_simple(v_forward,cvar("g_turrets_unit_ewheel_speed_fast"),0.4);
+
+        return VS_CALL_YES_DOING;
+
+    case VCM_REMOVE:
+
+    }
+
+    return VS_CALL_YES_DONE;
+}
+
 float ewheel_moveverb_path(float eval)
 {
     switch (eval)
@@ -79,7 +107,7 @@
         else
         {
             // Are we close enougth to a path node to switch to the next?
-            if (vlen(self.origin  - self.pathcurrent.origin) < 32)
+            if (vlen(self.origin  - self.pathcurrent.origin) < 64)
                 if (self.pathcurrent.path_next == world)
                 {
                     // Path endpoint reached
@@ -119,7 +147,7 @@
             self.steerto = steerlib_attract2(self.moveto,0.5,500,0.95);
 
             self.frame += 1;
-            movelib_move_simple(v_forward,cvar("g_turrets_unit_ewheel_speed_slow"),0.4);
+            movelib_move_simple(v_forward,cvar("g_turrets_unit_ewheel_speed_fast"),0.4);
 
             return VS_CALL_YES_DOING;
         }
@@ -157,9 +185,12 @@
 
     case VCM_DO:
 
-        self.moveto  = self.enemy.origin;
         self.steerto = steerlib_arrive(self.enemy.origin,self.target_range_optimal);
+        self.steerto = steerlib_beamsteer(self.steerto,1024,64,68,256);
+        self.moveto  = self.origin + self.steerto * 128;
 
+        makevectors(self.angles);
+
         if (self.tur_dist_enemy > self.target_range_optimal)
         {
             if ( self.tur_head.spawnshieldtime < 1 )
@@ -169,9 +200,10 @@
             }
             else if (self.tur_head.spawnshieldtime < 2)
             {
+
                 self.frame += 1;
                 movelib_move_simple(v_forward,cvar("g_turrets_unit_ewheel_speed_slow"),0.4);
-            }
+           }
             else
             {
                 self.frame += 1;
@@ -266,7 +298,7 @@
     real_angle = shortangle_vxy(real_angle,self.tur_head.angles);
 
     self.tur_head.spawnshieldtime = fabs(real_angle_y);
-    real_angle_y  = bound(self.tur_head.aim_speed * -1,real_angle_y,self.tur_head.aim_speed);
+    real_angle_y  = bound(-self.tur_head.aim_speed,real_angle_y,self.tur_head.aim_speed);
     self.angles_y = (self.angles_y + real_angle_y);
 
     // Simulate banking
@@ -326,6 +358,59 @@
 
 }
 
+/*
+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;
@@ -361,7 +446,7 @@
     }
 
     self.target_select_flags   = TFL_TARGETSELECT_PLAYERS | TFL_TARGETSELECT_RANGELIMTS | TFL_TARGETSELECT_TEAMCHECK | TFL_TARGETSELECT_LOS;
-    self.target_validate_flags = TFL_TARGETSELECT_PLAYERS | TFL_TARGETSELECT_RANGELIMTS | TFL_TARGETSELECT_TEAMCHECK | TFL_TARGETSELECT_LOS;
+    self.target_validate_flags = TFL_TARGETSELECT_PLAYERS | TFL_TARGETSELECT_RANGELIMTS | TFL_TARGETSELECT_TEAMCHECK;// | TFL_TARGETSELECT_LOS;
     self.damage_flags          |= TFL_DMG_DEATH_NOGIBS;
 
     self.iscreature = TRUE;
@@ -383,11 +468,23 @@
     self.tur_head.frame = 1;
 
     self.verbs_move = spawn();
-    verbstack_push(self.verbs_move, ewheel_moveverb_idle,   WVM_IDLE,  0);
-    verbstack_push(self.verbs_move, ewheel_moveverb_enemy,  WVM_ENEMY, 0);
-    verbstack_push(self.verbs_move, ewheel_moveverb_path,   WVM_PATH,  0);
-    verbstack_push(self.verbs_move, ewheel_moveverb_runaway,WVM_PANIC,  0);
 
+    //verbstack_push(self.verbs_move, ewheel_moveverb_roam,   WVM_IDLE,  0, self);
+    verbstack_push(self.verbs_move, ewheel_moveverb_idle,   WVM_IDLE,  0, self);
+    verbstack_push(self.verbs_move, ewheel_moveverb_enemy,  WVM_ENEMY, 0, self);
+    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);
@@ -413,6 +510,8 @@
 
 void spawnfunc_turret_ewheel()
 {
+    g_turrets_common_precash();
+
     precache_model ("models/turrets/ewheel-base.md3");
     precache_model ("models/turrets/ewheel-gun1.md3");
 

Modified: trunk/data/qcsrc/server/tturrets/units/unit_walker.qc
===================================================================
--- trunk/data/qcsrc/server/tturrets/units/unit_walker.qc	2009-04-23 13:45:02 UTC (rev 6575)
+++ trunk/data/qcsrc/server/tturrets/units/unit_walker.qc	2009-04-23 14:18:27 UTC (rev 6576)
@@ -598,8 +598,8 @@
         if (self.enemy == world)
             return VS_CALL_NO;
 
-        if (tracewalk(self.enemy, self.origin, self.mins, self.maxs, self.enemy.origin, MOVE_NORMAL))
-            return verb.verb_static_value;
+        //if (tracewalk(self.enemy, self.origin, self.mins, self.maxs, self.enemy.origin, MOVE_NORMAL))
+        return verb.verb_static_value;
 
         return VS_CALL_NO;
 
@@ -684,7 +684,7 @@
             if(verb.wait - time < 9)
                 if(vlen(self.moveto - self.origin) < 32)
                 {
-                    verbstack_push(self.walker_verbs_move, walker_moveverb_idle_pause,   WVM_IDLE + WVM_IDLE_UP, random() * (verb.wait - time));
+                    verbstack_push(self.walker_verbs_move, walker_moveverb_idle_pause,   WVM_IDLE + WVM_IDLE_UP, random() * (verb.wait - time), self);
                     self.animflag = ANIM_NO;
                     return VS_CALL_REMOVE;
                 }
@@ -729,7 +729,7 @@
     case VCM_DO:
 
         //if (random() < 0.5)
-            verbstack_push(self.walker_verbs_move, walker_moveverb_idle_pause,   WVM_IDLE + WVM_IDLE_UP, random() * 5);
+            verbstack_push(self.walker_verbs_move, walker_moveverb_idle_pause,   WVM_IDLE + WVM_IDLE_UP, random() * 5, self);
         //else
         //    verbstack_push(self.walker_verbs_move, walker_moveverb_idle_roam,   WVM_IDLE + WVM_IDLE_UP,  random() * 15);
 
@@ -949,12 +949,12 @@
     self.walker_verbs_attack = spawn();
     self.walker_verbs_idle   = spawn();
 
-    verbstack_push(self.walker_verbs_move, walker_moveverb_idle,   WVM_IDLE,  0);
-    verbstack_push(self.walker_verbs_move, walker_moveverb_enemy,  WVM_ENEMY, 0);
-    verbstack_push(self.walker_verbs_move, walker_moveverb_path,   WVM_PATH,  0);
+    verbstack_push(self.walker_verbs_move, walker_moveverb_idle,   WVM_IDLE,  0, self);
+    verbstack_push(self.walker_verbs_move, walker_moveverb_enemy,  WVM_ENEMY, 0, self);
+    verbstack_push(self.walker_verbs_move, walker_moveverb_path,   WVM_PATH,  0, self);
 
-    verbstack_push(self.walker_verbs_attack, walker_attackverb_meele,   WVA_MEELE,  0);
-    verbstack_push(self.walker_verbs_attack, walker_attackverb_rockets, WVA_ROCKET, 0);
+    verbstack_push(self.walker_verbs_attack, walker_attackverb_meele,   WVA_MEELE,  0, self);
+    verbstack_push(self.walker_verbs_attack, walker_attackverb_rockets, WVA_ROCKET, 0, self);
 
     self.damage_flags |= TFL_DMG_DEATH_NOGIBS;
 

Modified: trunk/data/qcsrc/server/verbstack.qc
===================================================================
--- trunk/data/qcsrc/server/verbstack.qc	2009-04-23 13:45:02 UTC (rev 6575)
+++ trunk/data/qcsrc/server/verbstack.qc	2009-04-23 14:18:27 UTC (rev 6576)
@@ -34,7 +34,7 @@
 /**
     Push a new verb onto the specified stack. Set vrb_life to make it time-limited.
 **/
-entity verbstack_push(entity stack, float(float eval) vrb_call, float val_static, float vrb_life)
+entity verbstack_push(entity stack, float(float eval) vrb_call, float val_static, float vrb_life,entity verb_owner)
 {
     entity vrb;
 
@@ -45,7 +45,7 @@
         return world;
 
     vrb                   = spawn();
-    vrb.owner             = self;
+    vrb.owner             = verb_owner;
     vrb.verbstack         = stack;
     vrb.verb_call         = vrb_call;
     vrb.verb_static_value = val_static;



More information about the nexuiz-commits mailing list