void trigger_teleport_use()
{
- if(teams_matter)
+ if(teamplay)
self.team = activator.team;
}
{
TDEATHLOOP(org)
{
- if not(teamplay && cvar("g_telefrags_teamplay") && head.team == player.team)
+ if not(teamplay && autocvar_g_telefrags_teamplay && head.team == player.team)
if(head.classname == "player")
if(head.health >= 1)
return 1;
{
if (player.classname == "player" && player.health >= 1)
{
- if not(teamplay && cvar("g_telefrags_teamplay") && head.team == player.team)
+ if not(teamplay && autocvar_g_telefrags_teamplay && head.team == player.team)
{
if(head.classname == "player")
if(head.health >= 1)
#define TELEPORT_FLAGS_TELEPORTER (TELEPORT_FLAG_SOUND | TELEPORT_FLAG_PARTICLES | TELEPORT_FLAG_TDEATH)
void TeleportPlayer(entity teleporter, entity player, vector to, vector to_angles, vector to_velocity, vector telefragmin, vector telefragmax, float tflags)
{
- entity oldself;
entity telefragger;
vector from;
if(self.pushltime < time) // only show one teleport effect per teleporter per 0.2 seconds, for better fps
{
if(tflags & TELEPORT_FLAG_SOUND)
- sound (player, CHAN_TRIGGER, "misc/teleport.wav", VOL_BASE, ATTN_NORM);
+ sound (player, CH_TRIGGER, "misc/teleport.wav", VOL_BASE, ATTN_NORM);
if(tflags & TELEPORT_FLAG_PARTICLES)
{
pointparticles(particleeffectnum("teleport"), player.origin, '0 0 0', 1);
if(player.classname == "player")
{
if(tflags & TELEPORT_FLAG_TDEATH)
- if(player.takedamage && player.deadflag == DEAD_NO && !g_race && !g_cts && (cvar("g_telefrags") || (tflags & TELEPORT_FLAG_FORCE_TDEATH)))
+ if(player.takedamage && player.deadflag == DEAD_NO && !g_race && !g_cts && (autocvar_g_telefrags || (tflags & TELEPORT_FLAG_FORCE_TDEATH)))
tdeath(player, teleporter, telefragger, telefragmin, telefragmax);
// player no longer is on ground
if(teleporter.owner)
{
player.pusher = teleporter.owner;
- player.pushltime = time + cvar("g_maxpushtime");
+ player.pushltime = time + autocvar_g_maxpushtime;
}
else
{
}
player.lastteleporttime = time;
-
- // stop player name display
- {
- oldself = self;
- self = player;
- ClearSelectedPlayer();
- self = oldself;
- }
}
}
if (self.active != ACTIVE_ACTIVE)
return;
- if (other.health < 1)
+ if not(other.iscreature)
return;
- if not(other.flags & FL_CLIENT) // FIXME: Make missiles firable through the teleport too
+
+ // for gameplay: vehicles can't teleport
+ if (other.vehicle_flags & VHF_ISVEHICLE)
+ return;
+
+ if (other.deadflag != DEAD_NO)
return;
if(self.team)
for(e = world; (e = find(e, targetname, self.target)); )
{
p = 1;
- if(cvar("g_telefrags_avoid"))
+ if(autocvar_g_telefrags_avoid)
{
o = e.origin + '0 0 1' * (1 - other.mins_z - 24);
if(check_tdeath(other, o, '0 0 0', '0 0 0'))
if(e.speed)
if(vlen(other.velocity) > e.speed)
other.velocity = normalize(other.velocity) * max(0, e.speed);
- if(cvar("g_teleport_maxspeed"))
- if(vlen(other.velocity) > cvar("g_teleport_maxspeed"))
- other.velocity = normalize(other.velocity) * max(0, cvar("g_teleport_maxspeed"));
+ if(autocvar_g_teleport_maxspeed)
+ if(vlen(other.velocity) > autocvar_g_teleport_maxspeed)
+ other.velocity = normalize(other.velocity) * max(0, autocvar_g_teleport_maxspeed);
o = e.origin + '0 0 1' * (1 - other.mins_z - 24);
TeleportPlayer(self, other, o, e.mangle, v_forward * vlen(other.velocity), '0 0 0', '0 0 0', TELEPORT_FLAGS_TELEPORTER);
void WarpZone_PostTeleportPlayer_Callback(entity pl)
{
UpdateCSQCProjectileAfterTeleport(pl);
+ // "disown" projectiles after teleport
+ if(pl.owner == pl.realowner)
+ pl.owner = world;
if(pl.classname == "player")
{
// reset tracking of oldvelocity for impact damage (sudden velocity changes)