bool autocvar_g_vehicle_bumblebee = true;
-float bumblebee_gunner_frame()
-{SELFPARAM();
- entity vehic = self.vehicle.owner;
- entity gun = self.vehicle;
- entity gunner = self;
- setself(vehic);
+bool bumblebee_gunner_frame(entity this)
+{
+ entity vehic = this.vehicle.owner;
+ entity gun = this.vehicle;
+ return = true;
// this isn't technically a vehicle (yet), let's not do frame functions on it (yet)
//vehicles_frame(gun, player);
vehic.solid = SOLID_NOT;
- //setorigin(gunner, vehic.origin);
- gunner.velocity = vehic.velocity;
+ //setorigin(this, vehic.origin);
+ this.velocity = vehic.velocity;
float _in, _out;
vehic.angles_x *= -1;
{
_in = autocvar_g_vehicle_bumblebee_cannon_turnlimit_in;
_out = autocvar_g_vehicle_bumblebee_cannon_turnlimit_out;
- setorigin(gunner, vehic.origin + v_up * -16 + v_forward * -16 + v_right * 128);
+ setorigin(this, vehic.origin + v_up * -16 + v_forward * -16 + v_right * 128);
}
else
{
_in = autocvar_g_vehicle_bumblebee_cannon_turnlimit_out;
_out = autocvar_g_vehicle_bumblebee_cannon_turnlimit_in;
- setorigin(gunner, vehic.origin + v_up * -16 + v_forward * -16 + v_right * -128);
+ setorigin(this, vehic.origin + v_up * -16 + v_forward * -16 + v_right * -128);
}
- crosshair_trace(gunner);
+ crosshair_trace(this);
vector _ct = trace_endpos;
vector ad;
if(trace_ent.takedamage)
if(!IS_DEAD(trace_ent) && !STAT(FROZEN, trace_ent))
{
- if(DIFF_TEAM(trace_ent, gunner))
+ if(DIFF_TEAM(trace_ent, this))
{
gun.enemy = trace_ent;
gun.lock_time = time + 5;
ad = vf;
- distance = vlen(ad - gunner.origin);
+ distance = vlen(ad - this.origin);
impact_time = distance / autocvar_g_vehicle_bumblebee_cannon_speed;
ad = vf + _vel * impact_time;
trace_endpos = ad;
- UpdateAuxiliaryXhair(gunner, ad, '1 0 1', 1);
+ UpdateAuxiliaryXhair(this, ad, '1 0 1', 1);
vehicle_aimturret(vehic, trace_endpos, gun, "fire",
autocvar_g_vehicle_bumblebee_cannon_pitchlimit_down * -1, autocvar_g_vehicle_bumblebee_cannon_pitchlimit_up,
_out * -1, _in, autocvar_g_vehicle_bumblebee_cannon_turnspeed);
autocvar_g_vehicle_bumblebee_cannon_pitchlimit_down * -1, autocvar_g_vehicle_bumblebee_cannon_pitchlimit_up,
_out * -1, _in, autocvar_g_vehicle_bumblebee_cannon_turnspeed);
- if(!forbidWeaponUse(gunner))
- if(PHYS_INPUT_BUTTON_ATCK(gunner))
+ if(!forbidWeaponUse(this))
+ if(PHYS_INPUT_BUTTON_ATCK(this))
if(time > gun.attack_finished_single[0])
if(gun.vehicle_energy >= autocvar_g_vehicle_bumblebee_cannon_cost)
{
gun.vehicle_energy -= autocvar_g_vehicle_bumblebee_cannon_cost;
- bumblebee_fire_cannon(gun, "fire", gunner);
+ bumblebee_fire_cannon(vehic, gun, "fire", this);
gun.delay = time;
gun.attack_finished_single[0] = time + autocvar_g_vehicle_bumblebee_cannon_refire;
}
- VEHICLE_UPDATE_PLAYER(gunner, health, bumblebee);
+ VEHICLE_UPDATE_PLAYER(this, vehic, health, bumblebee);
if(vehic.vehicle_flags & VHF_HASSHIELD)
- VEHICLE_UPDATE_PLAYER(gunner, shield, bumblebee);
+ VEHICLE_UPDATE_PLAYER(this, vehic, shield, bumblebee);
ad = gettaginfo(gun, gettagindex(gun, "fire"));
traceline(ad, ad + v_forward * MAX_SHOT_DISTANCE, MOVE_NORMAL, gun);
- UpdateAuxiliaryXhair(gunner, trace_endpos, ('1 0 0' * gunner.vehicle_reload1) + ('0 1 0' *(1 - gunner.vehicle_reload1)), 0);
+ UpdateAuxiliaryXhair(this, trace_endpos, ('1 0 0' * this.vehicle_reload1) + ('0 1 0' *(1 - this.vehicle_reload1)), 0);
if(vehic.owner)
- UpdateAuxiliaryXhair(vehic.owner, trace_endpos, ('1 0 0' * gunner.vehicle_reload1) + ('0 1 0' *(1 - gunner.vehicle_reload1)), ((gunner == vehic.gunner1) ? 1 : 2));
+ UpdateAuxiliaryXhair(vehic.owner, trace_endpos, ('1 0 0' * this.vehicle_reload1) + ('0 1 0' *(1 - this.vehicle_reload1)), ((this == vehic.gunner1) ? 1 : 2));
vehic.solid = SOLID_BBOX;
- PHYS_INPUT_BUTTON_ATCK(gunner) = PHYS_INPUT_BUTTON_ATCK2(gunner) = PHYS_INPUT_BUTTON_CROUCH(gunner) = false;
- gunner.vehicle_energy = (gun.vehicle_energy / autocvar_g_vehicle_bumblebee_cannon_ammo) * 100;
-
- setself(gunner);
- return 1;
+ PHYS_INPUT_BUTTON_ATCK(this) = PHYS_INPUT_BUTTON_ATCK2(this) = PHYS_INPUT_BUTTON_CROUCH(this) = false;
+ this.vehicle_energy = (gun.vehicle_energy / autocvar_g_vehicle_bumblebee_cannon_ammo) * 100;
}
vector bumblebee_gunner_findgoodexit(vector prefer_spot, entity gunner, entity player)
vehicles_touch();
}
-void bumblebee_regen()
-{SELFPARAM();
- if(self.gun1.delay + autocvar_g_vehicle_bumblebee_cannon_ammo_regen_pause < time)
- self.gun1.vehicle_energy = min(autocvar_g_vehicle_bumblebee_cannon_ammo,
- self.gun1.vehicle_energy + autocvar_g_vehicle_bumblebee_cannon_ammo_regen * frametime);
+void bumblebee_regen(entity this)
+{
+ if(this.gun1.delay + autocvar_g_vehicle_bumblebee_cannon_ammo_regen_pause < time)
+ this.gun1.vehicle_energy = min(autocvar_g_vehicle_bumblebee_cannon_ammo,
+ this.gun1.vehicle_energy + autocvar_g_vehicle_bumblebee_cannon_ammo_regen * frametime);
- if(self.gun2.delay + autocvar_g_vehicle_bumblebee_cannon_ammo_regen_pause < time)
- self.gun2.vehicle_energy = min(autocvar_g_vehicle_bumblebee_cannon_ammo,
- self.gun2.vehicle_energy + autocvar_g_vehicle_bumblebee_cannon_ammo_regen * frametime);
+ if(this.gun2.delay + autocvar_g_vehicle_bumblebee_cannon_ammo_regen_pause < time)
+ this.gun2.vehicle_energy = min(autocvar_g_vehicle_bumblebee_cannon_ammo,
+ this.gun2.vehicle_energy + autocvar_g_vehicle_bumblebee_cannon_ammo_regen * frametime);
- if(self.vehicle_flags & VHF_SHIELDREGEN)
- vehicles_regen(self.dmg_time, vehicle_shield, autocvar_g_vehicle_bumblebee_shield, autocvar_g_vehicle_bumblebee_shield_regen_pause, autocvar_g_vehicle_bumblebee_shield_regen, frametime, true);
+ if(this.vehicle_flags & VHF_SHIELDREGEN)
+ vehicles_regen(this, this.dmg_time, vehicle_shield, autocvar_g_vehicle_bumblebee_shield, autocvar_g_vehicle_bumblebee_shield_regen_pause, autocvar_g_vehicle_bumblebee_shield_regen, frametime, true);
- if(self.vehicle_flags & VHF_HEALTHREGEN)
- vehicles_regen(self.dmg_time, vehicle_health, autocvar_g_vehicle_bumblebee_health, autocvar_g_vehicle_bumblebee_health_regen_pause, autocvar_g_vehicle_bumblebee_health_regen, frametime, false);
+ if(this.vehicle_flags & VHF_HEALTHREGEN)
+ vehicles_regen(this, this.dmg_time, vehicle_health, autocvar_g_vehicle_bumblebee_health, autocvar_g_vehicle_bumblebee_health_regen_pause, autocvar_g_vehicle_bumblebee_health_regen, frametime, false);
- if(self.vehicle_flags & VHF_ENERGYREGEN)
- vehicles_regen(self.wait, vehicle_energy, autocvar_g_vehicle_bumblebee_energy, autocvar_g_vehicle_bumblebee_energy_regen_pause, autocvar_g_vehicle_bumblebee_energy_regen, frametime, false);
+ if(this.vehicle_flags & VHF_ENERGYREGEN)
+ vehicles_regen(this, this.wait, vehicle_energy, autocvar_g_vehicle_bumblebee_energy, autocvar_g_vehicle_bumblebee_energy_regen_pause, autocvar_g_vehicle_bumblebee_energy_regen, frametime, false);
}
-float bumblebee_pilot_frame()
-{SELFPARAM();
- entity pilot, vehic;
- vector newvel;
+bool bumblebee_pilot_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;
}
- pilot = self;
- vehic = self.vehicle;
- setself(vehic);
-
- vehicles_frame(vehic, pilot);
+ vehicles_frame(vehic, this);
if(IS_DEAD(vehic))
{
- setself(pilot);
- PHYS_INPUT_BUTTON_ATCK(pilot) = PHYS_INPUT_BUTTON_ATCK2(pilot) = false;
- return 1;
+ PHYS_INPUT_BUTTON_ATCK(this) = PHYS_INPUT_BUTTON_ATCK2(this) = false;
+ return;
}
- bumblebee_regen();
-
- crosshair_trace(pilot);
+ bumblebee_regen(vehic);
- vector vang;
- float ftmp;
+ crosshair_trace(this);
- vang = vehic.angles;
- newvel = vectoangles(normalize(trace_endpos - self.origin + '0 0 32'));
+ vector vang = vehic.angles;
+ vector newvel = vectoangles(normalize(trace_endpos - vehic.origin + '0 0 32'));
vang.x *= -1;
newvel.x *= -1;
if(newvel.x > 180) newvel.x -= 360;
if(newvel.y > 180) newvel.y -= 360;
if(newvel.y < -180) newvel.y += 360;
- ftmp = shortangle_f(pilot.v_angle.y - vang.y, vang.y);
+ float ftmp = shortangle_f(this.v_angle.y - vang.y, vang.y);
if(ftmp > 180) ftmp -= 360;
if(ftmp < -180) ftmp += 360;
vehic.avelocity_y = bound(-autocvar_g_vehicle_bumblebee_turnspeed, ftmp + vehic.avelocity.y * 0.9, autocvar_g_vehicle_bumblebee_turnspeed);
// Pitch
ftmp = 0;
- if(pilot.movement.x > 0 && vang.x < autocvar_g_vehicle_bumblebee_pitchlimit)
+ if(this.movement.x > 0 && vang.x < autocvar_g_vehicle_bumblebee_pitchlimit)
ftmp = 4;
- else if(pilot.movement.x < 0 && vang.x > -autocvar_g_vehicle_bumblebee_pitchlimit)
+ else if(this.movement.x < 0 && vang.x > -autocvar_g_vehicle_bumblebee_pitchlimit)
ftmp = -8;
newvel.x = bound(-autocvar_g_vehicle_bumblebee_pitchlimit, newvel.x , autocvar_g_vehicle_bumblebee_pitchlimit);
makevectors('0 1 0' * vehic.angles.y);
newvel = vehic.velocity * -autocvar_g_vehicle_bumblebee_friction;
- if(pilot.movement.x != 0)
+ if(this.movement.x != 0)
{
- if(pilot.movement.x > 0)
+ if(this.movement.x > 0)
newvel += v_forward * autocvar_g_vehicle_bumblebee_speed_forward;
- else if(pilot.movement.x < 0)
+ else if(this.movement.x < 0)
newvel -= v_forward * autocvar_g_vehicle_bumblebee_speed_forward;
}
- if(pilot.movement.y != 0)
+ if(this.movement.y != 0)
{
- if(pilot.movement.y < 0)
+ if(this.movement.y < 0)
newvel -= v_right * autocvar_g_vehicle_bumblebee_speed_strafe;
- else if(pilot.movement.y > 0)
+ else if(this.movement.y > 0)
newvel += v_right * autocvar_g_vehicle_bumblebee_speed_strafe;
ftmp = newvel * v_right;
ftmp *= frametime * 0.1;
vehic.angles_z = 0;
}
- if(PHYS_INPUT_BUTTON_CROUCH(pilot))
+ if(PHYS_INPUT_BUTTON_CROUCH(this))
newvel -= v_up * autocvar_g_vehicle_bumblebee_speed_down;
- else if(PHYS_INPUT_BUTTON_JUMP(pilot))
+ else if(PHYS_INPUT_BUTTON_JUMP(this))
newvel += v_up * autocvar_g_vehicle_bumblebee_speed_up;
vehic.velocity += newvel * frametime;
- pilot.velocity = pilot.movement = vehic.velocity;
+ this.velocity = this.movement = vehic.velocity;
if(autocvar_g_vehicle_bumblebee_healgun_locktime)
{
if(teamplay)
{
- if(trace_ent.team == pilot.team)
+ if(trace_ent.team == this.team)
{
vehic.tur_head.enemy = trace_ent;
vehic.tur_head.lock_time = time + autocvar_g_vehicle_bumblebee_healgun_locktime;
if(vehic.tur_head.enemy)
{
trace_endpos = real_origin(vehic.tur_head.enemy);
- UpdateAuxiliaryXhair(pilot, trace_endpos, '0 0.75 0', 0);
+ UpdateAuxiliaryXhair(this, trace_endpos, '0 0.75 0', 0);
}
}
- vang = vehicle_aimturret(vehic, trace_endpos, self.gun3, "fire",
+ vang = vehicle_aimturret(vehic, trace_endpos, vehic.gun3, "fire",
autocvar_g_vehicle_bumblebee_raygun_pitchlimit_down * -1, autocvar_g_vehicle_bumblebee_raygun_pitchlimit_up,
autocvar_g_vehicle_bumblebee_raygun_turnlimit_sides * -1, autocvar_g_vehicle_bumblebee_raygun_turnlimit_sides, autocvar_g_vehicle_bumblebee_raygun_turnspeed);
- if(!forbidWeaponUse(pilot))
- if((PHYS_INPUT_BUTTON_ATCK(pilot) || PHYS_INPUT_BUTTON_ATCK2(pilot)) && (vehic.vehicle_energy > autocvar_g_vehicle_bumblebee_raygun_dps * sys_frametime || autocvar_g_vehicle_bumblebee_raygun == 0))
+ if(!forbidWeaponUse(this))
+ if((PHYS_INPUT_BUTTON_ATCK(this) || PHYS_INPUT_BUTTON_ATCK2(this)) && (vehic.vehicle_energy > autocvar_g_vehicle_bumblebee_raygun_dps * sys_frametime || autocvar_g_vehicle_bumblebee_raygun == 0))
{
- vehic.gun3.enemy.realowner = pilot;
+ vehic.gun3.enemy.realowner = this;
vehic.gun3.enemy.effects &= ~EF_NODRAW;
vehic.gun3.enemy.hook_start = gettaginfo(vehic.gun3, gettagindex(vehic.gun3, "fire"));
{
if(autocvar_g_vehicle_bumblebee_raygun)
{
- Damage(trace_ent, vehic, pilot, autocvar_g_vehicle_bumblebee_raygun_dps * sys_frametime, DEATH_GENERIC.m_id, trace_endpos, v_forward * autocvar_g_vehicle_bumblebee_raygun_fps * sys_frametime);
+ Damage(trace_ent, vehic, this, autocvar_g_vehicle_bumblebee_raygun_dps * sys_frametime, DEATH_GENERIC.m_id, trace_endpos, v_forward * autocvar_g_vehicle_bumblebee_raygun_fps * sys_frametime);
vehic.vehicle_energy -= autocvar_g_vehicle_bumblebee_raygun_aps * sys_frametime;
}
else
{
if(!IS_DEAD(trace_ent))
- if((teamplay && trace_ent.team == pilot.team) || !teamplay)
+ if((teamplay && trace_ent.team == this.team) || !teamplay)
{
if(trace_ent.vehicle_flags & VHF_ISVEHICLE)
}
*/
- VEHICLE_UPDATE_PLAYER(pilot, health, bumblebee);
- VEHICLE_UPDATE_PLAYER(pilot, energy, bumblebee);
+ VEHICLE_UPDATE_PLAYER(this, vehic, health, bumblebee);
+ VEHICLE_UPDATE_PLAYER(this, vehic, energy, bumblebee);
- pilot.vehicle_ammo1 = (vehic.gun1.vehicle_energy / autocvar_g_vehicle_bumblebee_cannon_ammo) * 100;
- pilot.vehicle_ammo2 = (vehic.gun2.vehicle_energy / autocvar_g_vehicle_bumblebee_cannon_ammo) * 100;
+ this.vehicle_ammo1 = (vehic.gun1.vehicle_energy / autocvar_g_vehicle_bumblebee_cannon_ammo) * 100;
+ this.vehicle_ammo2 = (vehic.gun2.vehicle_energy / autocvar_g_vehicle_bumblebee_cannon_ammo) * 100;
if(vehic.vehicle_flags & VHF_HASSHIELD)
- VEHICLE_UPDATE_PLAYER(pilot, shield, bumblebee);
+ VEHICLE_UPDATE_PLAYER(this, vehic, shield, bumblebee);
vehic.angles_x *= -1;
makevectors(vehic.angles);
vehic.angles_x *= -1;
- setorigin(pilot, vehic.origin + v_up * 48 + v_forward * 160);
-
- PHYS_INPUT_BUTTON_ATCK(pilot) = PHYS_INPUT_BUTTON_ATCK2(pilot) = PHYS_INPUT_BUTTON_CROUCH(pilot) = false;
- setself(pilot);
+ setorigin(this, vehic.origin + v_up * 48 + v_forward * 160);
- return 1;
+ PHYS_INPUT_BUTTON_ATCK(this) = PHYS_INPUT_BUTTON_ATCK2(this) = PHYS_INPUT_BUTTON_CROUCH(this) = false;
}
void bumblebee_land()