#define ewheel_amin_bck_slow 3
#define ewheel_amin_bck_fast 4
-float ewheel_speed_fast;
-float ewheel_speed_slow;
-float ewheel_speed_slower;
-float ewheel_speed_stop;
-
-void turret_ewheel_loadcvars()
-{
- ewheel_speed_fast = autocvar_g_turrets_unit_ewheel_speed_fast;
- ewheel_speed_slow = autocvar_g_turrets_unit_ewheel_speed_slow;
- ewheel_speed_slower = autocvar_g_turrets_unit_ewheel_speed_slower;
- ewheel_speed_stop = autocvar_g_turrets_unit_ewheel_speed_stop;
-}
-
void turret_ewheel_projectile_explode()
{
- vector org2;
-
- org2 = findbetterlocation (self.origin, 8);
- pointparticles(particleeffectnum("laser_impact"), org2, trace_plane_normal * 1000, 1);
- //w_deathtypestring = "saw the eweel. to late.";
#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, world);
+ d = RadiusDamage (self, self.owner, self.owner.shot_dmg, 0, self.owner.shot_radius, world, self.owner.shot_force, DEATH_TURRET_EWHEEL, world);
self.owner.tur_dbg_dmg_t_h = self.owner.tur_dbg_dmg_t_h + d;
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, world);
+ RadiusDamage (self, self.owner, self.owner.shot_dmg, 0, self.owner.shot_radius, world, self.owner.shot_force, DEATH_TURRET_EWHEEL, world);
#endif
- sound (self, CHAN_PROJECTILE, "weapons/electro_impact.wav", VOL_BASE, ATTN_NORM);
remove (self);
}
}
}
-
+//#define EWHEEL_FANCYPATH
void ewheel_move_path()
{
-
+#ifdef EWHEEL_FANCYPATH
// Are we close enougth to a path node to switch to the next?
if (vlen(self.origin - self.pathcurrent.origin) < 64)
if (self.pathcurrent.path_next == world)
else
self.pathcurrent = self.pathcurrent.path_next;
-
+#else
+ if (vlen(self.origin - self.pathcurrent.origin) < 64)
+ self.pathcurrent = self.pathcurrent.enemy;
+#endif
if (self.pathcurrent)
{
self.moveto = self.pathcurrent.origin;
self.steerto = steerlib_attract2(self.moveto, 0.5, 500, 0.95);
- movelib_move_simple(v_forward, ewheel_speed_fast, 0.4);
-
- return;
+ movelib_move_simple(v_forward, autocvar_g_turrets_unit_ewheel_speed_fast, 0.4);
}
}
if ( self.tur_head.spawnshieldtime < 1 )
{
newframe = ewheel_amin_fwd_fast;
- movelib_move_simple(v_forward, ewheel_speed_fast, 0.4);
+ movelib_move_simple(v_forward, autocvar_g_turrets_unit_ewheel_speed_fast, 0.4);
}
else if (self.tur_head.spawnshieldtime < 2)
{
newframe = ewheel_amin_fwd_slow;
- movelib_move_simple(v_forward, ewheel_speed_slow, 0.4);
+ movelib_move_simple(v_forward, autocvar_g_turrets_unit_ewheel_speed_slow, 0.4);
}
else
{
newframe = ewheel_amin_fwd_slow;
- movelib_move_simple(v_forward, ewheel_speed_slower, 0.4);
+ movelib_move_simple(v_forward, autocvar_g_turrets_unit_ewheel_speed_slower, 0.4);
}
}
else if (self.tur_dist_enemy < self.target_range_optimal * 0.5)
{
newframe = ewheel_amin_bck_slow;
- movelib_move_simple(v_forward * -1, ewheel_speed_slow, 0.4);
+ movelib_move_simple(v_forward * -1, autocvar_g_turrets_unit_ewheel_speed_slow, 0.4);
}
else
{
newframe = ewheel_amin_stop;
- movelib_beak_simple(ewheel_speed_stop);
+ movelib_beak_simple(autocvar_g_turrets_unit_ewheel_speed_stop);
}
if(self.frame != newframe)
self.frame = 0;
if (vlen(self.velocity))
- movelib_beak_simple(ewheel_speed_stop);
+ movelib_beak_simple(autocvar_g_turrets_unit_ewheel_speed_stop);
}
void ewheel_postthink()
{
float vz;
- vector wish_angle,real_angle;
-
- /*
- if(self.enemy)
- dprint("enemy!\n");
- else
- dprint("nothign =(!\n");
- */
+ vector wish_angle, real_angle;
vz = self.velocity_z;
self.angles_x = anglemods(self.angles_x);
self.angles_y = anglemods(self.angles_y);
- //self.angles_x *= -1;
fixedmakevectors(self.angles);
- //self.angles_x *= -1;
wish_angle = normalize(self.steerto);
wish_angle = vectoangles(wish_angle);
real_angle = wish_angle - self.angles;
- real_angle = shortangle_vxy(real_angle,self.tur_head.angles);
+ 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,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
- self.angles_z -= self.angles_z * frametime * 2;
- self.angles_z = bound(-45,self.angles_z + ((real_angle_y * -25) * frametime),45);
-
if(self.enemy)
ewheel_move_enemy();
else if(self.pathcurrent)
entity e;
// Respawn is called & first spawn to, to set team. need to make sure we do not move the initial spawn.
- if(self.movetype != MOVETYPE_WALK)
+ if(self.movetype != MOVETYPE_WALK)
return;
self.velocity = '0 0 0';
dprint("Warning: not a turrret path\n");
else
{
+
+#ifdef EWHEEL_FANCYPATH
self.pathcurrent = WALKER_PATH(self.origin,e.origin);
self.pathgoal = e;
+#else
+ self.pathcurrent = e;
+#endif
}
}
}
{
self.velocity = '0 0 0';
- //turret_trowgib2(self.origin, self.velocity + '0 0 400', '-0.6 -0.2 -02', self, 3 + time + random() * 2);
-
+#ifdef EWHEEL_FANCYPATH
if (self.pathcurrent)
pathlib_deletepath(self.pathcurrent.owner);
-
+#endif
self.pathcurrent = world;
}
{
entity e;
- if (self.netname == "") self.netname = "eWheel Turret";
+ if (self.netname == "")
+ self.netname = "eWheel Turret";
if (self.target != "")
{
dprint("Warning: not a turrret path\n");
else
{
+#ifdef EWHEEL_FANCYPATH
self.pathcurrent = WALKER_PATH(self.origin, e.origin);
self.pathgoal = e;
+#else
+ self.pathcurrent = e;
+#endif
}
}
}
precache_model ("models/turrets/ewheel-base2.md3");
precache_model ("models/turrets/ewheel-gun1.md3");
- precache_model ("models/pathlib/goodsquare.md3");
- precache_model ("models/pathlib/badsquare.md3");
- precache_model ("models/pathlib/square.md3");
-
- turret_ewheel_loadcvars();
-
self.think = turret_ewheel_dinit;
self.nextthink = time + 0.5;
}