#include "raptor.qh"
-#ifdef IMPLEMENTATION
-
#ifdef SVQC
bool autocvar_g_vehicle_raptor = true;
float autocvar_g_vehicle_raptor_pitchlimit = 45;
float autocvar_g_vehicle_raptor_speed_forward = 1700;
-float autocvar_g_vehicle_raptor_speed_strafe = 900;
-float autocvar_g_vehicle_raptor_speed_up = 1700;
-float autocvar_g_vehicle_raptor_speed_down = 1700;
+float autocvar_g_vehicle_raptor_speed_strafe = 2200;
+float autocvar_g_vehicle_raptor_speed_up = 2300;
+float autocvar_g_vehicle_raptor_speed_down = 2000;
float autocvar_g_vehicle_raptor_friction = 2;
bool autocvar_g_vehicle_raptor_swim = false;
float autocvar_g_vehicle_raptor_cannon_pitchlimit_up = 12;
float autocvar_g_vehicle_raptor_cannon_pitchlimit_down = 32;
-float autocvar_g_vehicle_raptor_cannon_locktarget = 0;
+bool autocvar_g_vehicle_raptor_cannon_locktarget = true;
float autocvar_g_vehicle_raptor_cannon_locking_time = 0.2;
float autocvar_g_vehicle_raptor_cannon_locking_releasetime = 0.45;
float autocvar_g_vehicle_raptor_cannon_locked_time = 1;
float autocvar_g_vehicle_raptor_energy_regen = 25;
float autocvar_g_vehicle_raptor_energy_regen_pause = 0.25;
-float autocvar_g_vehicle_raptor_health = 150;
+float autocvar_g_vehicle_raptor_health = 250;
float autocvar_g_vehicle_raptor_health_regen = 0;
float autocvar_g_vehicle_raptor_health_regen_pause = 0;
-float autocvar_g_vehicle_raptor_shield = 75;
+float autocvar_g_vehicle_raptor_shield = 200;
float autocvar_g_vehicle_raptor_shield_regen = 25;
float autocvar_g_vehicle_raptor_shield_regen_pause = 1.5;
void raptor_exit(entity this, int eject)
{
+ entity player = this.owner;
+
this.tur_head.exteriormodeltoclient = NULL;
if(!IS_DEAD(this))
this.nextthink = time;
}
- if(!this.owner)
+ if(!player)
return;
makevectors(this.angles);
if(eject)
{
spot = this.origin + v_forward * 100 + '0 0 64';
- spot = vehicles_findgoodexit(this, spot);
- setorigin(this.owner , spot);
- this.owner.velocity = (v_up + v_forward * 0.25) * 750;
- this.owner.oldvelocity = this.owner.velocity;
+ spot = vehicles_findgoodexit(this, player, spot);
+ setorigin(player, spot);
+ player.velocity = (v_up + v_forward * 0.25) * 750;
+ player.oldvelocity = player.velocity;
}
else
{
if(vdist(this.velocity, >, 2 * autocvar_sv_maxairspeed))
{
- this.owner.velocity = normalize(this.velocity) * autocvar_sv_maxairspeed * 2;
- this.owner.velocity_z += 200;
+ player.velocity = normalize(this.velocity) * autocvar_sv_maxairspeed * 2;
+ player.velocity_z += 200;
spot = this.origin + v_forward * 32 + '0 0 64';
- spot = vehicles_findgoodexit(this, spot);
+ spot = vehicles_findgoodexit(this, player, spot);
}
else
{
- this.owner.velocity = this.velocity * 0.5;
- this.owner.velocity_z += 10;
+ player.velocity = this.velocity * 0.5;
+ player.velocity_z += 10;
spot = this.origin - v_forward * 200 + '0 0 64';
- spot = vehicles_findgoodexit(this, spot);
+ spot = vehicles_findgoodexit(this, player, spot);
}
- this.owner.oldvelocity = this.owner.velocity;
- setorigin(this.owner , spot);
+ player.oldvelocity = player.velocity;
+ setorigin(player, spot);
}
- antilag_clear(this.owner, CS(this.owner));
this.owner = NULL;
+ antilag_clear(player, CS(player));
}
bool raptor_frame(entity this, float dt)
entity vehic = this.vehicle;
return = true;
- if(gameover)
+ if(game_stopped)
{
vehic.solid = SOLID_NOT;
vehic.takedamage = DAMAGE_NO;
// Pitch
ftmp = 0;
- if(this.movement_x > 0 && vang_x < autocvar_g_vehicle_raptor_pitchlimit) ftmp = 5;
- else if(this.movement_x < 0 && vang_x > -autocvar_g_vehicle_raptor_pitchlimit) ftmp = -20;
+ if(CS(this).movement_x > 0 && vang_x < autocvar_g_vehicle_raptor_pitchlimit) ftmp = 5;
+ else if(CS(this).movement_x < 0 && vang_x > -autocvar_g_vehicle_raptor_pitchlimit) ftmp = -20;
df_x = bound(-autocvar_g_vehicle_raptor_pitchlimit, df_x , autocvar_g_vehicle_raptor_pitchlimit);
ftmp = vang_x - bound(-autocvar_g_vehicle_raptor_pitchlimit, df_x + ftmp, autocvar_g_vehicle_raptor_pitchlimit);
df = vehic.velocity * -autocvar_g_vehicle_raptor_friction;
- if(this.movement_x != 0)
+ if(CS(this).movement_x != 0)
{
- if(this.movement_x > 0)
+ if(CS(this).movement_x > 0)
df += v_forward * autocvar_g_vehicle_raptor_speed_forward;
- else if(this.movement_x < 0)
+ else if(CS(this).movement_x < 0)
df -= v_forward * autocvar_g_vehicle_raptor_speed_forward;
}
- if(this.movement_y != 0)
+ if(CS(this).movement_y != 0)
{
- if(this.movement_y < 0)
+ if(CS(this).movement_y < 0)
df -= v_right * autocvar_g_vehicle_raptor_speed_strafe;
- else if(this.movement_y > 0)
+ else if(CS(this).movement_y > 0)
df += v_right * autocvar_g_vehicle_raptor_speed_strafe;
- vehic.angles_z = bound(-30,vehic.angles_z + (this.movement_y / autocvar_g_vehicle_raptor_speed_strafe),30);
+ vehic.angles_z = bound(-30,vehic.angles_z + (CS(this).movement_y / autocvar_g_vehicle_raptor_speed_strafe),30);
}
else
{
df += v_up * autocvar_g_vehicle_raptor_speed_up;
vehic.velocity += df * dt;
- this.velocity = this.movement = vehic.velocity;
+ this.velocity = CS(this).movement = vehic.velocity;
setorigin(this, vehic.origin + '0 0 32');
+ this.oldorigin = this.origin; // negate fall damage
this.vehicle_weapon2mode = vehic.vehicle_weapon2mode;
/*
ad = ad * 0.5;
v_forward = vf * 0.5;
- traceline(ad, ad + v_forward * MAX_SHOT_DISTANCE, MOVE_NORMAL, vehic);
+ traceline(ad, ad + v_forward * max_shot_distance, MOVE_NORMAL, vehic);
UpdateAuxiliaryXhair(this, trace_endpos, '0 1 0', 0);
*/
PHYS_INPUT_BUTTON_ATCK(this) = PHYS_INPUT_BUTTON_ATCK2(this) = PHYS_INPUT_BUTTON_CROUCH(this) = false;
setorigin(this, vehic.origin + '0 0 32');
+ this.oldorigin = this.origin;
}
else
this.PlayerPhysplug = raptor_frame;
+ this.vehicle_weapon2mode = vehic.vehicle_weapon2mode;
+
if(vehic.vehicle_flags & VHF_SHIELDREGEN)
vehicles_regen(vehic, vehic.dmg_time, vehicle_shield, autocvar_g_vehicle_raptor_shield, autocvar_g_vehicle_raptor_shield_regen_pause, autocvar_g_vehicle_raptor_shield_regen, dt, true);
dropmark = spawn();
dropmark.owner = player;
dropmark.gravity = 1;
+ dropmark.dphitcontentsmask = DPCONTENTS_SOLID;
+ dropmark.solid = SOLID_CORPSE;
+ set_movetype(dropmark, MOVETYPE_BOUNCE);
}
float reload2 = STAT(VEHICLESTAT_RELOAD2) * 0.01;
where = project_3d_to_2d(trace_endpos);
setorigin(dropmark, trace_endpos);
- tmpSize = draw_getimagesize(vCROSS_DROP) * autocvar_cl_vehicles_crosshair_size;
if (!(where.z < 0 || where.x < 0 || where.y < 0 || where.x > vid_conwidth || where.y > vid_conheight))
{
+ tmpSize = draw_getimagesize(vCROSS_DROP) * autocvar_cl_vehicles_crosshair_size;
where.x -= tmpSize.x * 0.5;
where.y -= tmpSize.y * 0.5;
where.z = 0;
if(dropmark.cnt > time)
{
where = project_3d_to_2d(dropmark.origin);
- tmpSize = draw_getimagesize(vCROSS_DROP) * autocvar_cl_vehicles_crosshair_size * 1.25;
if (!(where.z < 0 || where.x < 0 || where.y < 0 || where.x > vid_conwidth || where.y > vid_conheight))
{
+ tmpSize = draw_getimagesize(vCROSS_DROP) * autocvar_cl_vehicles_crosshair_size * 1.25;
where.x -= tmpSize.x * 0.5;
where.y -= tmpSize.y * 0.5;
where.z = 0;
}
#endif
-#endif