X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fvehicles%2Fvehicle%2Fracer.qc;h=f3670a839e59b4b6ec5c1e756df3608f204fe483;hb=3525ea6680ae54755122430b2e618d60079b575c;hp=b9a1a71744b4ac487dc68e0cd4bf80de8f79620d;hpb=9f70bdba9a6fb2c06324be13504341da967f7028;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/vehicles/vehicle/racer.qc b/qcsrc/common/vehicles/vehicle/racer.qc index b9a1a7174..f3670a839 100644 --- a/qcsrc/common/vehicles/vehicle/racer.qc +++ b/qcsrc/common/vehicles/vehicle/racer.qc @@ -1,7 +1,7 @@ #ifndef VEHICLE_RACER #define VEHICLE_RACER -#include "racer_weapon.qc" +#include "racer_weapon.qh" CLASS(Racer, Vehicle) /* spawnflags */ ATTRIB(Racer, spawnflags, int, VHF_DMGSHAKE | VHF_DMGROLL); @@ -26,72 +26,78 @@ REGISTER_VEHICLE(RACER, NEW(Racer)); #ifdef IMPLEMENTATION -#include "racer_weapon.qc" - #ifdef SVQC #include -bool autocvar_g_vehicle_racer; +bool autocvar_g_vehicle_racer = true; -float autocvar_g_vehicle_racer_speed_afterburn; -float autocvar_g_vehicle_racer_afterburn_cost; +float autocvar_g_vehicle_racer_speed_afterburn = 3000; +// energy consumed per second +float autocvar_g_vehicle_racer_afterburn_cost = 100; -float autocvar_g_vehicle_racer_waterburn_cost; -float autocvar_g_vehicle_racer_waterburn_speed; +float autocvar_g_vehicle_racer_waterburn_cost = 5; +float autocvar_g_vehicle_racer_waterburn_speed = 750; -float autocvar_g_vehicle_racer_water_speed_forward; -float autocvar_g_vehicle_racer_water_speed_strafe; +float autocvar_g_vehicle_racer_water_speed_forward = 600; +float autocvar_g_vehicle_racer_water_speed_strafe = 600; float autocvar_g_vehicle_racer_pitchlimit = 30; float autocvar_g_vehicle_racer_water_downforce = 0.03; float autocvar_g_vehicle_racer_water_upforcedamper = 15; -float autocvar_g_vehicle_racer_anglestabilizer; -float autocvar_g_vehicle_racer_downforce; +float autocvar_g_vehicle_racer_anglestabilizer = 1.75; +float autocvar_g_vehicle_racer_downforce = 0.01; -float autocvar_g_vehicle_racer_speed_forward; -float autocvar_g_vehicle_racer_speed_strafe; -float autocvar_g_vehicle_racer_springlength; -float autocvar_g_vehicle_racer_upforcedamper; -float autocvar_g_vehicle_racer_friction; +float autocvar_g_vehicle_racer_speed_forward = 650; +float autocvar_g_vehicle_racer_speed_strafe = 650; +float autocvar_g_vehicle_racer_springlength = 70; +float autocvar_g_vehicle_racer_upforcedamper = 10; +float autocvar_g_vehicle_racer_friction = 0.45; float autocvar_g_vehicle_racer_water_time = 5; -float autocvar_g_vehicle_racer_hovertype; -float autocvar_g_vehicle_racer_hoverpower; +float autocvar_g_vehicle_racer_collision_multiplier = 0.05; + +// 0 = hover, != 0 = maglev +int autocvar_g_vehicle_racer_hovertype = 0; +// NOTE!! x 4 (4 engines) +float autocvar_g_vehicle_racer_hoverpower = 8000; -float autocvar_g_vehicle_racer_turnroll; -float autocvar_g_vehicle_racer_turnspeed; -float autocvar_g_vehicle_racer_pitchspeed; +float autocvar_g_vehicle_racer_turnroll = 30; +float autocvar_g_vehicle_racer_turnspeed = 220; +float autocvar_g_vehicle_racer_pitchspeed = 125; -float autocvar_g_vehicle_racer_energy; -float autocvar_g_vehicle_racer_energy_regen; -float autocvar_g_vehicle_racer_energy_regen_pause; +float autocvar_g_vehicle_racer_energy = 100; +float autocvar_g_vehicle_racer_energy_regen = 50; +float autocvar_g_vehicle_racer_energy_regen_pause = 1; -float autocvar_g_vehicle_racer_health; -float autocvar_g_vehicle_racer_health_regen; -float autocvar_g_vehicle_racer_health_regen_pause; +float autocvar_g_vehicle_racer_health = 200; +float autocvar_g_vehicle_racer_health_regen = 0; +float autocvar_g_vehicle_racer_health_regen_pause = 0; -float autocvar_g_vehicle_racer_shield; -float autocvar_g_vehicle_racer_shield_regen; -float autocvar_g_vehicle_racer_shield_regen_pause; +float autocvar_g_vehicle_racer_shield = 100; +float autocvar_g_vehicle_racer_shield_regen = 30; +float autocvar_g_vehicle_racer_shield_regen_pause = 1; -float autocvar_g_vehicle_racer_rocket_locktarget; -float autocvar_g_vehicle_racer_rocket_locking_time; -float autocvar_g_vehicle_racer_rocket_locking_releasetime; -float autocvar_g_vehicle_racer_rocket_locked_time; +bool autocvar_g_vehicle_racer_rocket_locktarget = true; +float autocvar_g_vehicle_racer_rocket_locking_time = 0.9; +float autocvar_g_vehicle_racer_rocket_locking_releasetime = 0.5; +float autocvar_g_vehicle_racer_rocket_locked_time = 4; -float autocvar_g_vehicle_racer_respawntime; +float autocvar_g_vehicle_racer_respawntime = 35; -float autocvar_g_vehicle_racer_blowup_radius; -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_blowup_radius = 250; +float autocvar_g_vehicle_racer_blowup_coredamage = 250; +float autocvar_g_vehicle_racer_blowup_edgedamage = 15; +float autocvar_g_vehicle_racer_blowup_forceintensity = 250; -float autocvar_g_vehicle_racer_bouncefactor; -float autocvar_g_vehicle_racer_bouncestop; -vector autocvar_g_vehicle_racer_bouncepain; +// Factor of old velocity to keep after collision +float autocvar_g_vehicle_racer_bouncefactor = 0.25; +// if != 0, New veloctiy after bounce = 0 if new velocity < this +float autocvar_g_vehicle_racer_bouncestop = 0; +// "minspeed_for_pain speedchange_to_pain_factor max_damage" +vector autocvar_g_vehicle_racer_bouncepain = '60 0.75 300'; .float racer_watertime; @@ -162,240 +168,234 @@ void racer_fire_rocket_aim(entity player, string tagname, entity trg) racer_fire_rocket(player, v, v_forward, trg); } -float racer_frame() -{SELFPARAM(); - entity player, racer; - vector df; - float ftmp; +bool racer_frame(entity this) +{ + entity vehic = this.vehicle; + return = true; if(intermission_running) { - self.vehicle.velocity = '0 0 0'; - self.vehicle.avelocity = '0 0 0'; - return 1; + vehic.velocity = '0 0 0'; + vehic.avelocity = '0 0 0'; + return; } - player = self; - racer = self.vehicle; - setself(racer); - - vehicles_frame(racer, player); + vehicles_frame(vehic, this); - if(pointcontents(racer.origin) != CONTENT_WATER) - racer.air_finished = time + autocvar_g_vehicle_racer_water_time; + if(pointcontents(vehic.origin) != CONTENT_WATER) + vehic.air_finished = time + autocvar_g_vehicle_racer_water_time; - if(IS_DEAD(racer)) + if(IS_DEAD(vehic)) { - setself(player); - PHYS_INPUT_BUTTON_ATCK(player) = PHYS_INPUT_BUTTON_ATCK2(player) = false; - return 1; + PHYS_INPUT_BUTTON_ATCK(this) = PHYS_INPUT_BUTTON_ATCK2(this) = false; + return; } - racer_align4point(self, PHYS_INPUT_TIMELENGTH); + racer_align4point(vehic, PHYS_INPUT_TIMELENGTH); - PHYS_INPUT_BUTTON_ZOOM(player) = PHYS_INPUT_BUTTON_CROUCH(player) = false; + PHYS_INPUT_BUTTON_ZOOM(this) = PHYS_INPUT_BUTTON_CROUCH(this) = false; - crosshair_trace(player); + crosshair_trace(this); - racer.angles_x *= -1; + vehic.angles_x *= -1; // Yaw - ftmp = autocvar_g_vehicle_racer_turnspeed * PHYS_INPUT_TIMELENGTH; - ftmp = bound(-ftmp, shortangle_f(player.v_angle_y - racer.angles_y, racer.angles_y), ftmp); - racer.angles_y = anglemods(racer.angles_y + ftmp); + float ftmp = autocvar_g_vehicle_racer_turnspeed * PHYS_INPUT_TIMELENGTH; + ftmp = bound(-ftmp, shortangle_f(this.v_angle_y - vehic.angles_y, vehic.angles_y), ftmp); + vehic.angles_y = anglemods(vehic.angles_y + ftmp); // Roll - racer.angles_z += -ftmp * autocvar_g_vehicle_racer_turnroll * PHYS_INPUT_TIMELENGTH; + vehic.angles_z += -ftmp * autocvar_g_vehicle_racer_turnroll * PHYS_INPUT_TIMELENGTH; // Pitch ftmp = autocvar_g_vehicle_racer_pitchspeed * PHYS_INPUT_TIMELENGTH; - ftmp = bound(-ftmp, shortangle_f(player.v_angle_x - racer.angles_x, racer.angles_x), ftmp); - racer.angles_x = bound(-autocvar_g_vehicle_racer_pitchlimit, anglemods(racer.angles_x + ftmp), autocvar_g_vehicle_racer_pitchlimit); + ftmp = bound(-ftmp, shortangle_f(this.v_angle_x - vehic.angles_x, vehic.angles_x), ftmp); + vehic.angles_x = bound(-autocvar_g_vehicle_racer_pitchlimit, anglemods(vehic.angles_x + ftmp), autocvar_g_vehicle_racer_pitchlimit); - makevectors(racer.angles); - racer.angles_x *= -1; + makevectors(vehic.angles); + vehic.angles_x *= -1; - //ftmp = racer.velocity_z; - df = racer.velocity * -autocvar_g_vehicle_racer_friction; - //racer.velocity_z = ftmp; + //ftmp = vehic.velocity_z; + vector df = vehic.velocity * -autocvar_g_vehicle_racer_friction; + //vehic.velocity_z = ftmp; - int cont = pointcontents(racer.origin); - if(player.movement) + int cont = pointcontents(vehic.origin); + if(this.movement) { if(cont == CONTENT_WATER || cont == CONTENT_LAVA || cont == CONTENT_SLIME) { - if(player.movement_x) { df += v_forward * ((player.movement_x > 0) ? autocvar_g_vehicle_racer_water_speed_forward : -autocvar_g_vehicle_racer_water_speed_forward); } - if(player.movement_y) { df += v_right * ((player.movement_y > 0) ? autocvar_g_vehicle_racer_water_speed_strafe : -autocvar_g_vehicle_racer_water_speed_strafe); } + if(this.movement_x) { df += v_forward * ((this.movement_x > 0) ? autocvar_g_vehicle_racer_water_speed_forward : -autocvar_g_vehicle_racer_water_speed_forward); } + if(this.movement_y) { df += v_right * ((this.movement_y > 0) ? autocvar_g_vehicle_racer_water_speed_strafe : -autocvar_g_vehicle_racer_water_speed_strafe); } } else { - if(player.movement_x) { df += v_forward * ((player.movement_x > 0) ? autocvar_g_vehicle_racer_speed_forward : -autocvar_g_vehicle_racer_speed_forward); } - if(player.movement_y) { df += v_right * ((player.movement_y > 0) ? autocvar_g_vehicle_racer_speed_strafe : -autocvar_g_vehicle_racer_speed_strafe); } + if(this.movement_x) { df += v_forward * ((this.movement_x > 0) ? autocvar_g_vehicle_racer_speed_forward : -autocvar_g_vehicle_racer_speed_forward); } + if(this.movement_y) { df += v_right * ((this.movement_y > 0) ? autocvar_g_vehicle_racer_speed_strafe : -autocvar_g_vehicle_racer_speed_strafe); } } #ifdef SVQC - if(self.sound_nexttime < time || self.sounds != 1) + if(vehic.sound_nexttime < time || vehic.sounds != 1) { - self.sounds = 1; - self.sound_nexttime = time + 10.922667; //soundlength("vehicles/racer_move.wav"); - sound (self, CH_TRIGGER_SINGLE, SND_VEH_RACER_MOVE, VOL_VEHICLEENGINE, ATTEN_NORM); + vehic.sounds = 1; + vehic.sound_nexttime = time + 10.922667; //soundlength("vehicles/racer_move.wav"); + sound (vehic, CH_TRIGGER_SINGLE, SND_VEH_RACER_MOVE, VOL_VEHICLEENGINE, ATTEN_NORM); } #endif } #ifdef SVQC else { - if(self.sound_nexttime < time || self.sounds != 0) + if(vehic.sound_nexttime < time || vehic.sounds != 0) { - self.sounds = 0; - self.sound_nexttime = time + 11.888604; //soundlength("vehicles/racer_idle.wav"); - sound (self, CH_TRIGGER_SINGLE, SND_VEH_RACER_IDLE, VOL_VEHICLEENGINE, ATTEN_NORM); + vehic.sounds = 0; + vehic.sound_nexttime = time + 11.888604; //soundlength("vehicles/racer_idle.wav"); + sound (vehic, CH_TRIGGER_SINGLE, SND_VEH_RACER_IDLE, VOL_VEHICLEENGINE, ATTEN_NORM); } } #endif // Afterburn - if (PHYS_INPUT_BUTTON_JUMP(player) && racer.vehicle_energy >= (autocvar_g_vehicle_racer_afterburn_cost * PHYS_INPUT_TIMELENGTH)) + if (PHYS_INPUT_BUTTON_JUMP(this) && vehic.vehicle_energy >= (autocvar_g_vehicle_racer_afterburn_cost * PHYS_INPUT_TIMELENGTH)) { #ifdef SVQC - if(time - racer.wait > 0.2) - pointparticles(EFFECT_RACER_BOOSTER, self.origin - v_forward * 32, v_forward * vlen(self.velocity), 1); + if(time - vehic.wait > 0.2) + pointparticles(EFFECT_RACER_BOOSTER, vehic.origin - v_forward * 32, v_forward * vlen(vehic.velocity), 1); #endif - racer.wait = time; + vehic.wait = time; if(cont == CONTENT_WATER || cont == CONTENT_LAVA || cont == CONTENT_SLIME) { - racer.vehicle_energy -= autocvar_g_vehicle_racer_waterburn_cost * PHYS_INPUT_TIMELENGTH; + vehic.vehicle_energy -= autocvar_g_vehicle_racer_waterburn_cost * PHYS_INPUT_TIMELENGTH; df += (v_forward * autocvar_g_vehicle_racer_waterburn_speed); } else { - racer.vehicle_energy -= autocvar_g_vehicle_racer_afterburn_cost * PHYS_INPUT_TIMELENGTH; + vehic.vehicle_energy -= autocvar_g_vehicle_racer_afterburn_cost * PHYS_INPUT_TIMELENGTH; df += (v_forward * autocvar_g_vehicle_racer_speed_afterburn); } #ifdef SVQC - if(racer.invincible_finished < time) + if(vehic.invincible_finished < time) { - traceline(racer.origin, racer.origin - '0 0 256', MOVE_NORMAL, self); + traceline(vehic.origin, vehic.origin - '0 0 256', MOVE_NORMAL, vehic); if(trace_fraction != 1.0) pointparticles(EFFECT_SMOKE_SMALL, trace_endpos, '0 0 0', 1); - racer.invincible_finished = time + 0.1 + (random() * 0.1); + vehic.invincible_finished = time + 0.1 + (random() * 0.1); } - if(racer.strength_finished < time) + if(vehic.strength_finished < time) { - racer.strength_finished = time + 10.922667; //soundlength("vehicles/racer_boost.wav"); - sound (racer.tur_head, CH_TRIGGER_SINGLE, SND_VEH_RACER_BOOST, VOL_VEHICLEENGINE, ATTEN_NORM); + vehic.strength_finished = time + 10.922667; //soundlength("vehicles/racer_boost.wav"); + sound (vehic.tur_head, CH_TRIGGER_SINGLE, SND_VEH_RACER_BOOST, VOL_VEHICLEENGINE, ATTEN_NORM); } #endif } else { - racer.strength_finished = 0; - sound (racer.tur_head, CH_TRIGGER_SINGLE, SND_Null, VOL_VEHICLEENGINE, ATTEN_NORM); + vehic.strength_finished = 0; + sound (vehic.tur_head, CH_TRIGGER_SINGLE, SND_Null, VOL_VEHICLEENGINE, ATTEN_NORM); } if(cont == CONTENT_WATER || cont == CONTENT_LAVA || cont == CONTENT_SLIME) - racer.racer_watertime = time; + vehic.racer_watertime = time; float dforce = autocvar_g_vehicle_racer_downforce; - if(time - racer.racer_watertime <= 3) + if(time - vehic.racer_watertime <= 3) dforce = autocvar_g_vehicle_racer_water_downforce; - df -= v_up * (vlen(racer.velocity) * dforce); - player.movement = racer.velocity += df * PHYS_INPUT_TIMELENGTH; + df -= v_up * (vlen(vehic.velocity) * dforce); + this.movement = vehic.velocity += df * PHYS_INPUT_TIMELENGTH; #ifdef SVQC + setself(vehic); + Weapon wep1 = WEP_RACER; - if (!forbidWeaponUse(player)) - if (PHYS_INPUT_BUTTON_ATCK(player)) + if (!forbidWeaponUse(this)) + if (PHYS_INPUT_BUTTON_ATCK(this)) if (wep1.wr_checkammo1(wep1)) { - string tagname = (racer.cnt) - ? (racer.cnt = 0, "tag_fire1") - : (racer.cnt = 1, "tag_fire2"); - vector org = gettaginfo(self, gettagindex(self, tagname)); + string tagname = (vehic.cnt) + ? (vehic.cnt = 0, "tag_fire1") + : (vehic.cnt = 1, "tag_fire2"); + vector org = gettaginfo(vehic, gettagindex(vehic, tagname)); w_shotorg = org; w_shotdir = v_forward; // Fix z-aim (for chase mode) - crosshair_trace(player); + crosshair_trace(this); w_shotdir.z = normalize(trace_endpos - org).z * 0.5; .entity weaponentity = weaponentities[0]; - wep1.wr_think(wep1, self, weaponentity, 1); + wep1.wr_think(wep1, vehic, weaponentity, 1); } + setself(this); + if(autocvar_g_vehicle_racer_rocket_locktarget) { - vehicles_locktarget(self, (1 / autocvar_g_vehicle_racer_rocket_locking_time) * frametime, + vehicles_locktarget(vehic, (1 / autocvar_g_vehicle_racer_rocket_locking_time) * frametime, (1 / autocvar_g_vehicle_racer_rocket_locking_releasetime) * frametime, autocvar_g_vehicle_racer_rocket_locked_time); - if(self.lock_target) + if(vehic.lock_target) { - if(racer.lock_strength == 1) - UpdateAuxiliaryXhair(player, real_origin(self.lock_target), '1 0 0', 0); - else if(self.lock_strength > 0.5) - UpdateAuxiliaryXhair(player, real_origin(self.lock_target), '0 1 0', 0); - else if(self.lock_strength < 0.5) - UpdateAuxiliaryXhair(player, real_origin(self.lock_target), '0 0 1', 0); + if(vehic.lock_strength == 1) + UpdateAuxiliaryXhair(this, real_origin(vehic.lock_target), '1 0 0', 0); + else if(vehic.lock_strength > 0.5) + UpdateAuxiliaryXhair(this, real_origin(vehic.lock_target), '0 1 0', 0); + else if(vehic.lock_strength < 0.5) + UpdateAuxiliaryXhair(this, real_origin(vehic.lock_target), '0 0 1', 0); } } - if(!forbidWeaponUse(player)) - if(time > racer.delay) - if(PHYS_INPUT_BUTTON_ATCK2(player)) + if(!forbidWeaponUse(this)) + if(time > vehic.delay) + if(PHYS_INPUT_BUTTON_ATCK2(this)) { - racer.misc_bulletcounter += 1; - racer.delay = time + 0.3; + vehic.misc_bulletcounter += 1; + vehic.delay = time + 0.3; - if(racer.misc_bulletcounter == 1) + if(vehic.misc_bulletcounter == 1) { - racer_fire_rocket_aim(player, "tag_rocket_r", (racer.lock_strength == 1 && racer.lock_target) ? racer.lock_target : world); - player.vehicle_ammo2 = 50; + racer_fire_rocket_aim(this, "tag_rocket_r", (vehic.lock_strength == 1 && vehic.lock_target) ? vehic.lock_target : world); + this.vehicle_ammo2 = 50; } - else if(racer.misc_bulletcounter == 2) + else if(vehic.misc_bulletcounter == 2) { - racer_fire_rocket_aim(player, "tag_rocket_l", (racer.lock_strength == 1 && racer.lock_target) ? racer.lock_target : world); - racer.lock_strength = 0; - racer.lock_target = world; - racer.misc_bulletcounter = 0; - racer.delay = time + autocvar_g_vehicle_racer_rocket_refire; - racer.lip = time; - player.vehicle_ammo2 = 0; + racer_fire_rocket_aim(this, "tag_rocket_l", (vehic.lock_strength == 1 && vehic.lock_target) ? vehic.lock_target : world); + vehic.lock_strength = 0; + vehic.lock_target = world; + vehic.misc_bulletcounter = 0; + vehic.delay = time + autocvar_g_vehicle_racer_rocket_refire; + vehic.lip = time; + this.vehicle_ammo2 = 0; } } - else if(racer.misc_bulletcounter == 0) - player.vehicle_ammo2 = 100; + else if(vehic.misc_bulletcounter == 0) + this.vehicle_ammo2 = 100; - player.vehicle_reload2 = bound(0, 100 * ((time - racer.lip) / (racer.delay - racer.lip)), 100); + this.vehicle_reload2 = bound(0, 100 * ((time - vehic.lip) / (vehic.delay - vehic.lip)), 100); - if(racer.vehicle_flags & VHF_SHIELDREGEN) - vehicles_regen(racer.dmg_time, vehicle_shield, autocvar_g_vehicle_racer_shield, autocvar_g_vehicle_racer_shield_regen_pause, autocvar_g_vehicle_racer_shield_regen, frametime, true); + if(vehic.vehicle_flags & VHF_SHIELDREGEN) + vehicles_regen(vehic, vehic.dmg_time, vehicle_shield, autocvar_g_vehicle_racer_shield, autocvar_g_vehicle_racer_shield_regen_pause, autocvar_g_vehicle_racer_shield_regen, frametime, true); - if(racer.vehicle_flags & VHF_HEALTHREGEN) - vehicles_regen(racer.dmg_time, vehicle_health, autocvar_g_vehicle_racer_health, autocvar_g_vehicle_racer_health_regen_pause, autocvar_g_vehicle_racer_health_regen, frametime, false); + if(vehic.vehicle_flags & VHF_HEALTHREGEN) + vehicles_regen(vehic, vehic.dmg_time, vehicle_health, autocvar_g_vehicle_racer_health, autocvar_g_vehicle_racer_health_regen_pause, autocvar_g_vehicle_racer_health_regen, frametime, false); - if(racer.vehicle_flags & VHF_ENERGYREGEN) - vehicles_regen(racer.wait, vehicle_energy, autocvar_g_vehicle_racer_energy, autocvar_g_vehicle_racer_energy_regen_pause, autocvar_g_vehicle_racer_energy_regen, frametime, false); + if(vehic.vehicle_flags & VHF_ENERGYREGEN) + vehicles_regen(vehic, vehic.wait, vehicle_energy, autocvar_g_vehicle_racer_energy, autocvar_g_vehicle_racer_energy_regen_pause, autocvar_g_vehicle_racer_energy_regen, frametime, false); + VEHICLE_UPDATE_PLAYER(this, vehic, health, racer); + VEHICLE_UPDATE_PLAYER(this, vehic, energy, racer); - VEHICLE_UPDATE_PLAYER(player, health, racer); - VEHICLE_UPDATE_PLAYER(player, energy, racer); + if(vehic.vehicle_flags & VHF_HASSHIELD) + VEHICLE_UPDATE_PLAYER(this, vehic, shield, racer); - if(racer.vehicle_flags & VHF_HASSHIELD) - VEHICLE_UPDATE_PLAYER(player, shield, racer); - - PHYS_INPUT_BUTTON_ATCK(player) = PHYS_INPUT_BUTTON_ATCK2(player) = false; + PHYS_INPUT_BUTTON_ATCK(this) = PHYS_INPUT_BUTTON_ATCK2(this) = false; #endif - setorigin(player,racer.origin + '0 0 32'); - player.velocity = racer.velocity; - - setself(player); - return 1; + setorigin(this, vehic.origin + '0 0 32'); + this.velocity = vehic.velocity; } void racer_think() @@ -471,7 +471,7 @@ void racer_exit(float eject) self.owner.oldvelocity = self.owner.velocity; setorigin(self.owner , spot); } - antilag_clear(self.owner); + antilag_clear(self.owner, CS(self.owner)); self.owner = world; } @@ -571,6 +571,7 @@ METHOD(Racer, vr_impact, void(Racer thisveh, entity instance)) METHOD(Racer, vr_enter, void(Racer thisveh, entity instance)) { #ifdef SVQC + SELFPARAM(); self.movetype = MOVETYPE_BOUNCE; 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; @@ -578,7 +579,7 @@ METHOD(Racer, vr_enter, void(Racer thisveh, entity instance)) if(self.owner.flagcarried) setorigin(self.owner.flagcarried, '-190 0 96'); #elif defined(CSQC) - + SELFPARAM(); self.move_movetype = MOVETYPE_BOUNCE; #endif } @@ -586,6 +587,7 @@ METHOD(Racer, vr_enter, void(Racer thisveh, entity instance)) METHOD(Racer, vr_spawn, void(Racer thisveh, entity instance)) { #ifdef SVQC + SELFPARAM(); if(self.scale != 0.5) { if(autocvar_g_vehicle_racer_hovertype != 0) @@ -667,6 +669,7 @@ METHOD(Racer, vr_crosshair, void(Racer thisveh)) METHOD(Racer, vr_setup, void(Racer thisveh, entity instance)) { #ifdef SVQC + SELFPARAM(); self.vehicle_exit = racer_exit; #endif