}
// vehicle enter/exit handling
-vector vehicles_findgoodexit(entity this, vector prefer_spot)
+vector vehicles_findgoodexit(entity this, entity player, vector prefer_spot)
{
// TODO: we actually want the player's size here
- tracebox(this.origin + '0 0 32', PL_MIN_CONST, PL_MAX_CONST, prefer_spot, MOVE_NORMAL, this.owner);
+ tracebox(this.origin + '0 0 32', PL_MIN_CONST, PL_MAX_CONST, prefer_spot, MOVE_NORMAL, player);
if(trace_fraction == 1.0 && !trace_startsolid && !trace_allsolid)
return prefer_spot;
v = randomvec();
v_z = 0;
v = v2 + normalize(v) * mysize;
- tracebox(v2, PL_MIN_CONST, PL_MAX_CONST, v, MOVE_NORMAL, this.owner);
+ tracebox(v2, PL_MIN_CONST, PL_MAX_CONST, v, MOVE_NORMAL, player);
if(trace_fraction == 1.0 && !trace_startsolid && !trace_allsolid)
return v;
}
else
spot = this.origin + v_up * 128 - v_forward * 300;
- spot = vehicles_findgoodexit(this, spot);
+ spot = vehicles_findgoodexit(this, this.owner, spot);
// Hide beam
if(this.gun3.enemy || !wasfreed(this.gun3.enemy))
if(eject)
{
spot = this.origin + v_forward * 100 + '0 0 64';
- spot = vehicles_findgoodexit(this, spot);
+ spot = vehicles_findgoodexit(this, this.owner, spot);
setorigin(this.owner, spot);
this.owner.velocity = (v_up + v_forward * 0.25) * 750;
this.owner.oldvelocity = this.owner.velocity;
this.owner.velocity = normalize(this.velocity) * autocvar_sv_maxairspeed * 2;
this.owner.velocity_z += 200;
spot = this.origin + v_forward * 32 + '0 0 32';
- spot = vehicles_findgoodexit(this, spot);
+ spot = vehicles_findgoodexit(this, this.owner, spot);
}
else
{
this.owner.velocity = this.velocity * 0.5;
this.owner.velocity_z += 10;
spot = this.origin - v_forward * 200 + '0 0 32';
- spot = vehicles_findgoodexit(this, spot);
+ spot = vehicles_findgoodexit(this, this.owner, spot);
}
this.owner.oldvelocity = this.owner.velocity;
setorigin(this.owner , spot);
if(eject)
{
spot = this.origin + v_forward * 100 + '0 0 64';
- spot = vehicles_findgoodexit(this, spot);
+ spot = vehicles_findgoodexit(this, player, spot);
setorigin(player, spot);
player.velocity = (v_up + v_forward * 0.25) * 750;
player.oldvelocity = player.velocity;
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
{
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);
}
player.oldvelocity = player.velocity;
setorigin(player, spot);
if(eject)
{
spot = this.origin + v_forward * 100 + '0 0 64';
- spot = vehicles_findgoodexit(this, spot);
+ spot = vehicles_findgoodexit(this, player, spot);
setorigin(player, spot);
player.velocity = (v_up + v_forward * 0.25) * 750;
player.oldvelocity = player.velocity;
player.velocity = normalize(this.velocity) * vlen(this.velocity);
player.velocity_z += 200;
spot = this.origin + v_forward * 128 + '0 0 64';
- spot = vehicles_findgoodexit(this, spot);
+ spot = vehicles_findgoodexit(this, player, spot);
}
else
{
player.velocity = this.velocity * 0.5;
player.velocity_z += 10;
spot = this.origin + v_forward * 256 + '0 0 64';
- spot = vehicles_findgoodexit(this, spot);
+ spot = vehicles_findgoodexit(this, player, spot);
}
player.oldvelocity = player.velocity;
setorigin(player, spot);