.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;
float buttons_prev;
float not_allowed_to_move;
string c;
+
+ WarpZone_PlayerPhysics_FixVAngle();
maxspd_mod = 1;
if(g_minstagib && (self.items & IT_INVINCIBLE))
if (self.deadflag)
goto end;
- WarpZoneLib_PlayerPhysics_FixVAngle();
-
if (!self.fixangle && !g_bugrigs)
{
self.angles_x = 0;
.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
}