[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