]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
fix warpzone prediction
authorRudolf Polzer <divverent@alientrap.org>
Thu, 28 Apr 2011 20:51:05 +0000 (22:51 +0200)
committerRudolf Polzer <divverent@alientrap.org>
Thu, 28 Apr 2011 20:51:05 +0000 (22:51 +0200)
qcsrc/server/cl_client.qc
qcsrc/server/cl_physics.qc
qcsrc/warpzonelib/server.qc

index a01ca4edc59809ecd158cb39dbe1595a7642636d..b3d326264e0a2a702843ae0b874714d6eb11f0cf 100644 (file)
@@ -2629,6 +2629,8 @@ void() nexball_setstatus;
 .float items_added;
 void PlayerPreThink (void)
 {
+       WarpZone_PlayerPhysics_FixVAngle();
+
        self.stat_game_starttime = game_starttime;
        self.stat_allow_oldnexbeam = autocvar_g_allow_oldnexbeam;
        self.stat_leadlimit = autocvar_leadlimit;
index defbb04e426de3750529768c2234931da019a2e7..08368676d0055791a10e7d6a9c7135a5ff568ceb 100644 (file)
@@ -667,6 +667,8 @@ void SV_PlayerPhysics()
        float buttons_prev;
        float not_allowed_to_move;
        string c;
+
+       WarpZone_PlayerPhysics_FixVAngle();
        
        maxspd_mod = 1;
        if(g_minstagib && (self.items & IT_INVINCIBLE))
@@ -884,8 +886,6 @@ void SV_PlayerPhysics()
        if (self.deadflag)
                goto end;
 
-       WarpZoneLib_PlayerPhysics_FixVAngle();
-
        if (!self.fixangle && !g_bugrigs)
        {
                self.angles_x = 0;
index bf2cca7e59d92935290c2f267f93eab135ef96b6..ed068247213edd0b88207e35d4e07bdd5284aacd 100644 (file)
@@ -1,5 +1,6 @@
 .vector warpzone_oldorigin, warpzone_oldvelocity, warpzone_oldangles;
 .float warpzone_teleport_time;
+.entity warpzone_teleport_zone;
 
 void WarpZone_StoreProjectileData(entity e)
 {
@@ -89,7 +90,7 @@ float WarpZone_Teleport(entity player)
        WarpZone_RefSys_Add(player, self);
        WarpZone_TeleportPlayer(self, player, o1 - player.view_ofs, a1, v1);
        WarpZone_StoreProjectileData(player);
-       player.warpzone_teleport_time = servertime;
+       player.warpzone_teleport_time = time;
        player.warpzone_teleport_zone = self;
 
        return 1;
@@ -689,6 +690,13 @@ void spawnfunc_target_warpzone_reconnect()
 
 void WarpZone_PlayerPhysics_FixVAngle(void)
 {
-       if(time < self.warpzone_teleport_time)
+#ifdef WARPZONE_FIX_VANGLE
+       if(self.v_angle_z <= 360)
+       if(clienttype(self) == CLIENTTYPE_REAL)
+       if(time - self.ping * 0.001 < self.warpzone_teleport_time)
+       {
                self.v_angle = WarpZone_TransformVAngles(self.warpzone_teleport_zone, self.v_angle);
+               self.v_angle_z += 720; // mark as adjusted
+       }
+#endif
 }