]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/triggers/teleporters.qc
Makefile: use `-I.`
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / triggers / teleporters.qc
index f990cd1d529d281270026082dd53f6ac6d24916b..37ab1f694e97ba314a52906872686a3cd022a557 100644 (file)
@@ -3,21 +3,21 @@
 #if defined(CSQC)
 #elif defined(MENUQC)
 #elif defined(SVQC)
-    #include "../../lib/warpzone/common.qh"
-    #include "../../lib/warpzone/util_server.qh"
-    #include "../../lib/warpzone/server.qh"
+    #include <lib/warpzone/common.qh>
+    #include <lib/warpzone/util_server.qh>
+    #include <lib/warpzone/server.qh>
     #include "../constants.qh"
        #include "../triggers/subs.qh"
     #include "../util.qh"
-    #include "../../server/weapons/csqcprojectile.qh"
-    #include "../../server/autocvars.qh"
-    #include "../../server/constants.qh"
-    #include "../../server/defs.qh"
+    #include <server/weapons/csqcprojectile.qh>
+    #include <server/autocvars.qh>
+    #include <server/constants.qh>
+    #include <server/defs.qh>
     #include "../deathtypes/all.qh"
     #include "../turrets/sv_turrets.qh"
     #include "../vehicles/all.qh"
     #include "../mapinfo.qh"
-    #include "../../server/anticheat.qh"
+    #include <server/anticheat.qh>
 #endif
 
 float check_tdeath(entity player, vector org, vector telefragmin, vector telefragmax)
@@ -110,6 +110,7 @@ void TeleportPlayer(entity teleporter, entity player, vector to, vector to_angle
        makevectors(player.angles);
        Reset_ArcBeam(player, v_forward);
        UpdateCSQCProjectileAfterTeleport(player);
+       UpdateItemAfterTeleport(player);
 #elif defined(CSQC)
        from = player.move_origin;
        player.move_origin = to;
@@ -119,8 +120,12 @@ void TeleportPlayer(entity teleporter, entity player, vector to, vector to_angle
        player.iflags |= IFLAG_TELEPORTED | IFLAG_V_ANGLE | IFLAG_ANGLES;
        player.csqcmodel_teleported = 1;
        player.v_angle = to_angles;
-       setproperty(VF_ANGLES, player.move_angles);
-       setproperty(VF_CL_VIEWANGLES, player.move_angles);
+
+       if(player.isplayermodel) // not for anything but the main player
+       {
+               setproperty(VF_ANGLES, player.move_angles);
+               setproperty(VF_CL_VIEWANGLES, player.move_angles);
+       }
 
        makevectors(player.move_angles);
 #endif
@@ -133,7 +138,7 @@ void TeleportPlayer(entity teleporter, entity player, vector to, vector to_angle
                                tdeath(player, teleporter, telefragger, telefragmin, telefragmax);
 
                // player no longer is on ground
-               player.flags &= ~FL_ONGROUND;
+               UNSET_ONGROUND(player);
 
                // reset tracking of oldvelocity for impact damage (sudden velocity changes)
                player.oldvelocity = player.velocity;
@@ -280,29 +285,36 @@ entity Teleport_Find(vector mi, vector ma)
        return world;
 }
 
-#ifdef SVQC
 void WarpZone_PostTeleportPlayer_Callback(entity pl)
 {SELFPARAM();
+#ifdef SVQC
        makevectors(pl.angles);
        Reset_ArcBeam(pl, v_forward);
        UpdateCSQCProjectileAfterTeleport(pl);
+       UpdateItemAfterTeleport(pl);
        {
                WITH(entity, self, pl, anticheat_fixangle());
        }
+#endif
        // "disown" projectiles after teleport
        if(pl.owner)
        if(pl.owner == pl.realowner)
        {
+       #ifdef SVQC
                if(!(pl.flags & FL_PROJECTILE))
+       #elif defined(CSQC)
+               if(!(pl.move_flags & BIT(15))) // FL_PROJECTILE
+       #endif
                        LOG_INFO("A non-projectile got through a warpzone and its owner cleared. It's a ", pl.classname, ".\n");
                pl.owner = world;
        }
        if(IS_PLAYER(pl))
        {
                // reset tracking of oldvelocity for impact damage (sudden velocity changes)
+       #ifdef SVQC
                pl.oldvelocity = pl.velocity;
+       #endif
                // reset teleport time tracking too (or multijump can cause insane speeds)
                pl.lastteleporttime = time;
        }
 }
-#endif