X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fvehicles%2Fracer.qc;h=777820e48c261c26f18cc8c9b093b42abfa71a85;hb=2ab57b248854a04ac90ab5652f409770a20139c0;hp=a2ea179860b55114f3b8b76a1376e28298dd5579;hpb=8b6d17d45b5708e8d3272f3e9dfb28a5a7f6e977;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/vehicles/racer.qc b/qcsrc/server/vehicles/racer.qc index a2ea17986..777820e48 100644 --- a/qcsrc/server/vehicles/racer.qc +++ b/qcsrc/server/vehicles/racer.qc @@ -1,6 +1,5 @@ #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); @@ -67,6 +66,10 @@ float autocvar_g_vehicle_racer_blowup_coredamage; 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() @@ -323,7 +326,7 @@ float racer_frame() { 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 @@ -332,7 +335,7 @@ float racer_frame() { 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); } } @@ -359,13 +362,13 @@ float racer_frame() { //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); } @@ -492,8 +495,8 @@ void racer_think() 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'); @@ -506,7 +509,7 @@ void racer_exit(float eject) 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; @@ -518,16 +521,24 @@ void racer_exit(float eject) 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() { @@ -542,14 +553,15 @@ 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); @@ -559,7 +571,6 @@ void racer_blowup() 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; @@ -576,7 +587,6 @@ void racer_blowup() void racer_deadtouch() { - dprint("Boink!\n"); self.avelocity_x *= 0.7; self.cnt -= 1; if(self.cnt <= 0) @@ -587,7 +597,6 @@ void racer_die() { self.health = 0; self.event_damage = SUB_Null; - self.iscreature = FALSE; self.solid = SOLID_CORPSE; self.takedamage = DAMAGE_NO; self.deadflag = DEAD_DYING; @@ -616,7 +625,7 @@ void racer_dinit() 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, @@ -650,10 +659,8 @@ void spawnfunc_vehicle_racer() 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"); @@ -678,6 +685,10 @@ void spawnfunc_vehicle_racer() 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