.vector warpzone_oldorigin, warpzone_oldvelocity, warpzone_oldangles;
.float warpzone_teleport_time;
+.entity warpzone_teleport_zone;
void WarpZone_StoreProjectileData(entity e)
{
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;
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
}