X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fmapobjects%2Fteleporters.qc;h=987347283fb646e2b73e5569ccceb7d8a97a614f;hb=c508170b815826d8db563659e0c63c90cdd555de;hp=ec6a26d18338949336ed54656a11dc7b93c234d2;hpb=fbd313c7ceb26a09310d8062926f4ac2468623a8;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/mapobjects/teleporters.qc b/qcsrc/common/mapobjects/teleporters.qc index ec6a26d18..987347283 100644 --- a/qcsrc/common/mapobjects/teleporters.qc +++ b/qcsrc/common/mapobjects/teleporters.qc @@ -44,12 +44,12 @@ void tdeath(entity player, entity teleporter, entity telefragger, vector telefra { TDEATHLOOP(player.origin) { - if (IS_PLAYER(player) && player.health >= 1) + if (IS_PLAYER(player) && GetResource(player, RES_HEALTH) >= 1) { if (!(teamplay && autocvar_g_telefrags_teamplay && head.team == player.team)) { if(IS_PLAYER(head)) - if(head.health >= 1) + if(GetResource(head, RES_HEALTH) >= 1) ++tdeath_hit; Damage (head, teleporter, telefragger, 10000, DEATH_TELEFRAG.m_id, DMG_NOWEP, head.origin, '0 0 0'); } @@ -113,6 +113,11 @@ void TeleportPlayer(entity teleporter, entity player, vector to, vector to_angle setorigin(player, to); player.oldorigin = to; // don't undo the teleport by unsticking player.angles = to_angles; + if (IS_BOT_CLIENT(player)) + { + player.v_angle = player.angles; + bot_aim_reset(player); + } player.fixangle = true; player.velocity = to_velocity; BITXOR_ASSIGN(player.effects, EF_TELEPORT_BIT); @@ -141,9 +146,12 @@ void TeleportPlayer(entity teleporter, entity player, vector to, vector to_angle #ifdef SVQC if(IS_PLAYER(player)) { - if(tflags & TELEPORT_FLAG_TDEATH) - if(player.takedamage && !IS_DEAD(player) && !g_race && !g_cts && (autocvar_g_telefrags || (tflags & TELEPORT_FLAG_FORCE_TDEATH))) - tdeath(player, teleporter, telefragger, telefragmin, telefragmax); + if((tflags & TELEPORT_FLAG_TDEATH) && player.takedamage && !IS_DEAD(player) + && !g_race && !g_cts && (autocvar_g_telefrags || (tflags & TELEPORT_FLAG_FORCE_TDEATH)) + && !(round_handler_IsActive() && !round_handler_IsRoundStarted())) + { + tdeath(player, teleporter, telefragger, telefragmin, telefragmax); + } // player no longer is on ground UNSET_ONGROUND(player); @@ -252,7 +260,7 @@ void teleport_findtarget(entity this) if(n == 0) { // no dest! - objerror (this, "Teleporter with nonexistant target"); + objerror (this, "Teleporter with nonexistent target"); return; } else if(n == 1)