#define RACER_MIN '-120 -120 -40'
#define RACER_MAX '120 120 40'
-#define RACER_ENGINE "sound/vehicles/racer.wav"
#ifdef SVQC
void racer_exit(float eject);
float autocvar_g_vehicle_racer_blowup_edgedamage;
float autocvar_g_vehicle_racer_blowup_forceintensity;
+float autocvar_g_vehicle_racer_bouncefactor;
+float autocvar_g_vehicle_racer_bouncestop;
+vector autocvar_g_vehicle_racer_bouncepain;
+
var vector racer_force_from_tag(string tag_name, float spring_length, float max_power);
void racer_align4point()
float ftmp;
if(intermission_running)
- return;
+ return 1;
player = self;
racer = self.vehicle;
{
self.sounds = 1;
self.sound_nexttime = time + 10.922667; //soundlength("vehicles/racer_move.wav");
- sound (self, CHAN_TRIGGER, "vehicles/racer_move.wav", VOL_VEHICLEENGINE, ATTN_NORM);
+ sound (self, CH_TRIGGER_SINGLE, "vehicles/racer_move.wav", VOL_VEHICLEENGINE, ATTN_NORM);
}
}
else
{
self.sounds = 0;
self.sound_nexttime = time + 11.888604; //soundlength("vehicles/racer_idle.wav");
- sound (self, CHAN_TRIGGER, "vehicles/racer_idle.wav", VOL_VEHICLEENGINE, ATTN_NORM);
+ sound (self, CH_TRIGGER_SINGLE, "vehicles/racer_idle.wav", VOL_VEHICLEENGINE, ATTN_NORM);
}
}
{
//self.sounds = 2;
self.strength_finished = time + 10.922667; //soundlength("vehicles/racer_boost.wav");
- sound (self, CHAN_PAIN, "vehicles/racer_boost.wav", VOL_VEHICLEENGINE, ATTN_NORM);
+ sound (self.tur_head, CH_TRIGGER_SINGLE, "vehicles/racer_boost.wav", VOL_VEHICLEENGINE, ATTN_NORM);
}
}
else
{
self.strength_finished = 0;
- sound (self, CHAN_PAIN, "misc/null.wav", VOL_VEHICLEENGINE, ATTN_NORM);
+ sound (self.tur_head, CH_TRIGGER_SINGLE, "misc/null.wav", VOL_VEHICLEENGINE, ATTN_NORM);
}
void racer_enter()
{
self.movetype = MOVETYPE_BOUNCE;
- self.owner.vehicle_health = (self.vehicle_health / autocvar_g_vehicle_racer_health);
- self.owner.vehicle_shield = (self.vehicle_shield / autocvar_g_vehicle_racer_shield);
+ self.owner.vehicle_health = (self.vehicle_health / autocvar_g_vehicle_racer_health) * 100;
+ self.owner.vehicle_shield = (self.vehicle_shield / autocvar_g_vehicle_racer_shield) * 100;
if(self.owner.flagcarried)
setorigin(self.owner.flagcarried, '-190 0 96');
self.think = racer_think;
self.nextthink = time;
self.movetype = MOVETYPE_TOSS;
- sound (self, CHAN_PAIN, "misc/null.wav", VOL_VEHICLEENGINE, ATTN_NORM);
+ sound (self.tur_head, CH_TRIGGER_SINGLE, "misc/null.wav", VOL_VEHICLEENGINE, ATTN_NORM);
if not (self.owner)
return;
spot = vehicles_findgoodexit(spot);
setorigin(self.owner , spot);
self.owner.velocity = (v_up + v_forward * 0.25) * 750;
+ self.owner.oldvelocity = self.owner.velocity;
}
else
{
+ self.owner.velocity = normalize(self.velocity) * autocvar_sv_maxairspeed;
+ self.owner.oldvelocity = self.owner.velocity;
spot = self.origin - v_forward * 200 + '0 0 64';
spot = vehicles_findgoodexit(spot);
setorigin(self.owner , spot);
}
-
+ antilag_clear(self.owner);
self.owner = world;
}
+void racer_impact()
+{
+ if(autocvar_g_vehicle_racer_bouncepain_x)
+ vehilces_impact(autocvar_g_vehicle_racer_bouncepain_x, autocvar_g_vehicle_racer_bouncepain_y, autocvar_g_vehicle_racer_bouncepain_z);
+}
void racer_spawn()
{
self.scale = 0.5;
setsize(self, RACER_MIN * 0.5, RACER_MAX * 0.5);
+ self.bouncefactor = autocvar_g_vehicle_racer_bouncefactor;
+ self.bouncestop = autocvar_g_vehicle_racer_bouncestop;
+ self.vehicle_impact = racer_impact;
+ //self.destvec = autocvar_g_vehicle_racer_bouncepain;
}
void racer_blowup()
{
- sound (self, CHAN_PROJECTILE, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM);
- pointparticles(particleeffectnum("explosion_big"), self.origin, '0 0 0', 1);
-
self.deadflag = DEAD_DEAD;
self.vehicle_exit(VHEF_NORMAL);
autocvar_g_vehicle_racer_blowup_forceintensity,
DEATH_WAKIBLOWUP, world);
- self.alpha = -1;
self.nextthink = time + autocvar_g_vehicle_racer_respawntime;
self.think = racer_spawn;
self.movetype = MOVETYPE_NONE;
void racer_deadtouch()
{
- dprint("Boink!\n");
self.avelocity_x *= 0.7;
self.cnt -= 1;
if(self.cnt <= 0)
{
self.health = 0;
self.event_damage = SUB_Null;
- self.iscreature = FALSE;
self.solid = SOLID_CORPSE;
self.takedamage = DAMAGE_NO;
self.deadflag = DEAD_DYING;
if not (vehicle_initialize(
"Wakizashi",
"models/vehicles/wakizashi.dpm",
- "",
+ "null", // we need this so tur_head is networked and usable for sounds
"models/vehicles/wakizashi_cockpit.dpm",
"", "", "tag_viewport",
HUD_WAKIZASHI,
self.vehicle_flags |= VHF_DMGSHAKE;
self.vehicle_flags |= VHF_DMGROLL;
- precache_sound ("weapons/laserimpact.wav");
precache_sound ("weapons/lasergun_fire.wav");
precache_sound ("weapons/rocket_fire.wav");
- precache_sound ("weapons/rocket_impact.wav");
precache_sound ("vehicles/racer_idle.wav");
precache_sound ("vehicles/racer_move.wav");
self.vehicle_flags |= VHF_HEALTHREGEN;
self.think = racer_dinit;
- self.nextthink = time + (autocvar_g_vehicles_delayspawn ? autocvar_g_vehicle_racer_respawntime + (random() * autocvar_g_vehicles_delayspawn_jitter) : 0.5);
+
+ if(g_assault)
+ self.nextthink = time + 0.5;
+ else
+ self.nextthink = time + (autocvar_g_vehicles_delayspawn ? autocvar_g_vehicle_racer_respawntime + (random() * autocvar_g_vehicles_delayspawn_jitter) : 0.5);
}
#endif // SVQC