X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fvehicles%2Fraptor.qc;h=c815030ed53d6ef9d874c06b63e6b3b9698cd424;hb=6f699a24f2d01cc9b6c199f925a37aef10c88b41;hp=c59ec3c55ec09c6b811d06a641a2a2a1b75099d2;hpb=70b696e4e2bbe7322bf580be42961b2d5a159f31;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/vehicles/raptor.qc b/qcsrc/server/vehicles/raptor.qc index c59ec3c55..c815030ed 100644 --- a/qcsrc/server/vehicles/raptor.qc +++ b/qcsrc/server/vehicles/raptor.qc @@ -57,6 +57,10 @@ float autocvar_g_vehicle_raptor_shield; float autocvar_g_vehicle_raptor_shield_regen; float autocvar_g_vehicle_raptor_shield_regen_pause; +float autocvar_g_vehicle_raptor_bouncefactor; +float autocvar_g_vehicle_raptor_bouncestop; +vector autocvar_g_vehicle_raptor_bouncepain; + void raptor_spawn(); float raptor_frame(); float raptor_takeoff(); @@ -66,7 +70,7 @@ float raptor_takeoff(); float raptor_altitude(float amax) { - tracebox(self.origin, self.mins, self.maxs, self.origin - ('0 0 1' * amax), TRUE, self); + tracebox(self.origin, self.mins, self.maxs, self.origin - ('0 0 1' * amax), MOVE_WORLDONLY, self); return vlen(self.origin - trace_endpos); } @@ -180,8 +184,8 @@ void raptor_enter() self.owner.PlayerPhysplug = raptor_takeoff; self.movetype = MOVETYPE_BOUNCEMISSILE; self.solid = SOLID_SLIDEBOX; - self.owner.vehicle_health = (self.vehicle_health / autocvar_g_vehicle_raptor_health); - self.owner.vehicle_shield = (self.vehicle_shield / autocvar_g_vehicle_raptor_shield); + self.owner.vehicle_health = (self.vehicle_health / autocvar_g_vehicle_raptor_health) * 100; + self.owner.vehicle_shield = (self.vehicle_shield / autocvar_g_vehicle_raptor_shield) * 100; self.velocity_z = 1; // Nudge upwards to takeoff sequense can work. self.tur_head.exteriormodeltoclient = self.owner; @@ -194,26 +198,26 @@ void raptor_enter() } void raptor_land() -{ - +{ float hgt; - - hgt = raptor_altitude(512); + + hgt = raptor_altitude(512); self.velocity = (self.velocity * 0.9) + ('0 0 -1800' * (hgt / 256) * sys_frametime); self.angles_x *= 0.95; self.angles_z *= 0.95; if(hgt < 128) - if(self.frame != 0) - self.frame = max(self.frame - 0.25, 0); + if(hgt > 0) + self.frame = (hgt / 128) * 25; self.bomb1.gun1.avelocity_y = 90 + ((self.frame / 25) * 2000); self.bomb1.gun2.avelocity_y = -self.bomb1.gun1.avelocity_y; if(hgt < 16) { - self.movetype = MOVETYPE_TOSS; - self.think = raptor_think; + self.movetype = MOVETYPE_TOSS; + self.think = raptor_think; + self.frame = 0; } self.nextthink = time; @@ -247,7 +251,7 @@ void raptor_exit(float eject) spot = vehicles_findgoodexit(spot); setorigin(self.owner , spot); } - + antilag_clear(self.owner); self.owner = world; } @@ -261,7 +265,7 @@ float raptor_takeoff() if(self.sound_nexttime < time) { self.sound_nexttime = time + 7.955812; //soundlength("vehicles/raptor_fly.wav"); - csound (self, CH_TRIGGER, "vehicles/raptor_speed.wav", VOL_VEHICLEENGINE, ATTN_NORM); + sound (self, CH_TRIGGER_SINGLE, "vehicles/raptor_speed.wav", VOL_VEHICLEENGINE, ATTN_NORM); } // Takeoff sequense @@ -325,15 +329,15 @@ float raptor_frame() if(self.sound_nexttime < time) { self.sound_nexttime = time + 7.955812; - //csound (self.tur_head, CH_TRIGGER, "vehicles/raptor_fly.wav", 1 - ftmp, ATTN_NORM ); - csound (self, CH_TRIGGER, "vehicles/raptor_speed.wav", 1, ATTN_NORM); + //sound (self.tur_head, CH_TRIGGER_SINGLE, "vehicles/raptor_fly.wav", 1 - ftmp, ATTN_NORM ); + sound (self, CH_TRIGGER_SINGLE, "vehicles/raptor_speed.wav", 1, ATTN_NORM); self.wait = ftmp; } /* else if(fabs(ftmp - self.wait) > 0.2) { - csound (self.tur_head, CH_TRIGGER, "", 1 - ftmp, ATTN_NORM ); - csound (self, CH_TRIGGER, "", ftmp, ATTN_NORM); + sound (self.tur_head, CH_TRIGGER_SINGLE, "", 1 - ftmp, ATTN_NORM ); + sound (self, CH_TRIGGER_SINGLE, "", ftmp, ATTN_NORM); self.wait = ftmp; } */ @@ -538,6 +542,8 @@ float raptor_frame() VEHICLE_UPDATE_PLAYER(shield, raptor); player.BUTTON_ATCK = player.BUTTON_ATCK2 = player.BUTTON_CROUCH = 0; + + self = player; return 1; } @@ -563,7 +569,7 @@ void raptor_diethink() { if(random() < 0.1) { - asound (self, CH_SHOTS, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM); + sound (self, CH_SHOTS, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM); pointparticles(particleeffectnum("explosion_small"), randomvec() * 80 + (self.origin + '0 0 100'), '0 0 0', 1); } self.nextthink = time + 0.1; @@ -591,6 +597,12 @@ void raptor_die() self.touch = raptor_blowup; } +void raptor_impact() +{ + if(autocvar_g_vehicle_raptor_bouncepain_x) + vehilces_impact(autocvar_g_vehicle_raptor_bouncepain_x, autocvar_g_vehicle_raptor_bouncepain_y, autocvar_g_vehicle_raptor_bouncepain_z); +} + void raptor_spawn() { self.frame = 0; @@ -605,6 +617,10 @@ void raptor_spawn() setsize(self, RAPTOR_MIN, RAPTOR_MAX ); self.delay = time; + + self.bouncefactor = autocvar_g_vehicle_raptor_bouncefactor; + self.bouncestop = autocvar_g_vehicle_raptor_bouncestop; + self.vehicle_impact = raptor_impact; } // If we dont do this ever now and then, the raptors rotors @@ -734,6 +750,10 @@ void spawnfunc_vehicle_raptor() precache_sound ("vehicles/raptor_speed.wav"); self.think = raptor_dinit; - self.nextthink = time + (autocvar_g_vehicles_delayspawn ? autocvar_g_vehicle_raptor_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_raptor_respawntime + (random() * autocvar_g_vehicles_delayspawn_jitter) : 0.5); } #endif // SVQC