X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fvehicles%2Fraptor.qc;h=11b9081a6022dc72d9cbbaf45596fbba0fc59308;hb=b2dc1d0a1c73a6eeb47df5092be173db37da1f7d;hp=76caf4b2747afbb9cdec91a3c7c95f6f3f52230c;hpb=aed4b86c838295b0c9f340a29b2f90983a740611;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/vehicles/raptor.qc b/qcsrc/server/vehicles/raptor.qc index 76caf4b27..11b9081a6 100644 --- a/qcsrc/server/vehicles/raptor.qc +++ b/qcsrc/server/vehicles/raptor.qc @@ -194,6 +194,7 @@ void raptor_think() void raptor_enter() { + self.vehicle_weapon2mode = RSM_BOMB; self.owner.PlayerPhysplug = raptor_takeoff; self.movetype = MOVETYPE_BOUNCEMISSILE; self.solid = SOLID_SLIDEBOX; @@ -250,7 +251,7 @@ void raptor_exit(float eject) if not (self.owner) return; - + makevectors(self.angles); if(eject) { @@ -262,12 +263,24 @@ void raptor_exit(float eject) } else { - self.owner.velocity = normalize(self.velocity) * autocvar_sv_maxairspeed; + if(vlen(self.velocity) > 2 * autocvar_sv_maxairspeed) + { + self.owner.velocity = normalize(self.velocity) * autocvar_sv_maxairspeed * 2; + self.owner.velocity_z += 200; + spot = self.origin + v_forward * 32 + '0 0 64'; + spot = vehicles_findgoodexit(spot); + } + else + { + self.owner.velocity = self.velocity * 0.5; + self.owner.velocity_z += 10; + spot = self.origin - v_forward * 200 + '0 0 64'; + spot = vehicles_findgoodexit(spot); + } 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; } @@ -300,13 +313,13 @@ float raptor_takeoff() player.PlayerPhysplug = raptor_frame; if(self.vehicle_flags & VHF_SHIELDREGEN) - vehicles_regen(dmg_time, vehicle_shield, autocvar_g_vehicle_raptor_shield, autocvar_g_vehicle_raptor_shield_regen_pause, autocvar_g_vehicle_raptor_shield_regen, frametime, TRUE); + vehicles_regen(raptor.dmg_time, vehicle_shield, autocvar_g_vehicle_raptor_shield, autocvar_g_vehicle_raptor_shield_regen_pause, autocvar_g_vehicle_raptor_shield_regen, frametime, TRUE); if(self.vehicle_flags & VHF_HEALTHREGEN) - vehicles_regen(dmg_time, vehicle_health, autocvar_g_vehicle_raptor_health, autocvar_g_vehicle_raptor_health_regen_pause, autocvar_g_vehicle_raptor_health_regen, frametime, FALSE); + vehicles_regen(raptor.dmg_time, vehicle_health, autocvar_g_vehicle_raptor_health, autocvar_g_vehicle_raptor_health_regen_pause, autocvar_g_vehicle_raptor_health_regen, frametime, FALSE); if(self.vehicle_flags & VHF_ENERGYREGEN) - vehicles_regen(cnt, vehicle_energy, autocvar_g_vehicle_raptor_energy, autocvar_g_vehicle_raptor_energy_regen_pause, autocvar_g_vehicle_raptor_energy_regen, frametime, FALSE); + vehicles_regen(raptor.cnt, vehicle_energy, autocvar_g_vehicle_raptor_energy, autocvar_g_vehicle_raptor_energy_regen_pause, autocvar_g_vehicle_raptor_energy_regen, frametime, FALSE); raptor.bomb1.alpha = raptor.bomb2.alpha = (time - raptor.lip) / (raptor.delay - raptor.lip); @@ -587,13 +600,13 @@ float raptor_frame() } if(self.vehicle_flags & VHF_SHIELDREGEN) - vehicles_regen(dmg_time, vehicle_shield, autocvar_g_vehicle_raptor_shield, autocvar_g_vehicle_raptor_shield_regen_pause, autocvar_g_vehicle_raptor_shield_regen, frametime, TRUE); + vehicles_regen(raptor.dmg_time, vehicle_shield, autocvar_g_vehicle_raptor_shield, autocvar_g_vehicle_raptor_shield_regen_pause, autocvar_g_vehicle_raptor_shield_regen, frametime, TRUE); if(self.vehicle_flags & VHF_HEALTHREGEN) - vehicles_regen(dmg_time, vehicle_health, autocvar_g_vehicle_raptor_health, autocvar_g_vehicle_raptor_health_regen_pause, autocvar_g_vehicle_raptor_health_regen, frametime, FALSE); + vehicles_regen(raptor.dmg_time, vehicle_health, autocvar_g_vehicle_raptor_health, autocvar_g_vehicle_raptor_health_regen_pause, autocvar_g_vehicle_raptor_health_regen, frametime, FALSE); if(self.vehicle_flags & VHF_ENERGYREGEN) - vehicles_regen(cnt, vehicle_energy, autocvar_g_vehicle_raptor_energy, autocvar_g_vehicle_raptor_energy_regen_pause, autocvar_g_vehicle_raptor_energy_regen, frametime, FALSE); + vehicles_regen(raptor.cnt, vehicle_energy, autocvar_g_vehicle_raptor_energy, autocvar_g_vehicle_raptor_energy_regen_pause, autocvar_g_vehicle_raptor_energy_regen, frametime, FALSE); if(raptor.vehicle_weapon2mode == RSM_BOMB) { @@ -687,12 +700,15 @@ void raptor_blowup() self.velocity = '0 0 0'; setorigin(self, self.pos1); - self.touch = SUB_Null; + self.touch = func_null; self.nextthink = 0; } void raptor_diethink() { + if(time >= self.wait) + self.think = raptor_blowup; + if(random() < 0.1) { sound (self, CH_SHOTS, "weapons/rocket_impact.wav", VOL_BASE, ATTN_NORM); @@ -704,13 +720,14 @@ void raptor_diethink() void raptor_die() { self.health = 0; - self.event_damage = SUB_Null; + self.event_damage = func_null; self.solid = SOLID_CORPSE; self.takedamage = DAMAGE_NO; self.deadflag = DEAD_DYING; self.movetype = MOVETYPE_BOUNCE; self.think = raptor_diethink; self.nextthink = time; + self.wait = time + 5 + (random() * 5); pointparticles(particleeffectnum("explosion_medium"), findbetterlocation (self.origin, 16), '0 0 0', 1); @@ -859,6 +876,7 @@ void raptor_spawn(float _f) self.bouncefactor = autocvar_g_vehicle_raptor_bouncefactor; self.bouncestop = autocvar_g_vehicle_raptor_bouncestop; self.vehicle_impact = raptor_impact; + self.damageforcescale = 0.25; } void spawnfunc_vehicle_raptor() @@ -910,7 +928,8 @@ void spawnfunc_vehicle_raptor() raptor_enter, raptor_exit, raptor_die, raptor_think, FALSE, - autocvar_g_vehicle_raptor_health)) + autocvar_g_vehicle_raptor_health, + autocvar_g_vehicle_raptor_shield)) { remove(self); return;