]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/ecs/systems/physics.qc
Disable client prediction when in follow mode (impossible to predict)
[xonotic/xonotic-data.pk3dir.git] / qcsrc / ecs / systems / physics.qc
index f73ade3d12ea58ea6f5652554909505c0a335f79..cd59c516c991386d6f6d8e7ef6c78353b3921658 100644 (file)
@@ -33,7 +33,12 @@ void sys_phys_update(entity this, float dt)
        if (IS_SVQC) {
                if (this.move_movetype == MOVETYPE_NONE) { return; }
                // when we get here, disableclientprediction cannot be 2
-               this.disableclientprediction = (this.move_qcphysics) ? -1 : 0;
+               if(this.move_movetype == MOVETYPE_FOLLOW) // not compatible with prediction
+                       this.disableclientprediction = 1;
+               else if(this.move_qcphysics)
+                       this.disableclientprediction = -1;
+               else
+                       this.disableclientprediction = 0;
        }
 
        viewloc_PlayerPhysics(this);
@@ -126,7 +131,7 @@ void sys_phys_update(entity this, float dt)
                this.com_phys_gravity = '0 0 0';
        } else if (ITEMS_STAT(this) & IT_USING_JETPACK) {
                PM_jetpack(this, maxspeed_mod, dt);
-       } else if (IS_ONGROUND(this)) {
+       } else if (IS_ONGROUND(this) && (!IS_ONSLICK(this) || !PHYS_SLICK_APPLYGRAVITY(this))) {
                if (!WAS_ONGROUND(this)) {
                        emit(phys_land, this);
                        if (this.lastground < time - 0.3) {
@@ -360,11 +365,9 @@ void sys_phys_simulate(entity this, float dt)
                        // apply edge friction
                        const float f2 = vlen2(vec2(this.velocity));
                        if (f2 > 0) {
-                               trace_dphitq3surfaceflags = 0;
-                               tracebox(this.origin, this.mins, this.maxs, this.origin - '0 0 1', MOVE_NOMONSTERS, this);
                                // TODO: apply edge friction
                                // apply ground friction
-                               const int realfriction = (trace_dphitq3surfaceflags & Q3SURFACEFLAG_SLICK)
+                               const int realfriction = (IS_ONSLICK(this))
                                    ? PHYS_FRICTION_SLICK(this)
                                        : PHYS_FRICTION(this);