]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/antilag.qc
Fix another bug I forgot
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / antilag.qc
index 8a628a1bea91e1c5f9e5d5158b176b3eeedfad91..0f6434eab68e3330c5807a4f46c664e8721cdf9f 100644 (file)
@@ -3,6 +3,7 @@
 .float antilag_times[ANTILAG_MAX_ORIGINS];
 .float antilag_index;
 .vector antilag_saved_origin;
+.float antilag_takenback;
 
 .float antilag_debug;
 
@@ -14,6 +15,9 @@ void antilag_dummy()
 
 void antilag_record(entity e, float t)
 {
+    if(e.vehicle)
+        antilag_record(e.vehicle, t);
+
        if(time < e.(antilag_times[e.antilag_index]))
                return;
        e.antilag_index = e.antilag_index + 1;
@@ -24,6 +28,7 @@ void antilag_record(entity e, float t)
 
        if(e.antilag_debug)
                te_spark(antilag_takebackorigin(e, t - e.antilag_debug), '0 0 0', 32);
+
 }
 
 // finds the index BEFORE t
@@ -75,6 +80,7 @@ vector antilag_takebackorigin(entity e, float t)
 vector antilag_takebackavgvelocity(entity e, float t0, float t1)
 {
        vector o0, o1;
+
        if(t0 >= t1)
                return '0 0 0';
        o0 = antilag_takebackorigin(e, t0);
@@ -84,11 +90,24 @@ vector antilag_takebackavgvelocity(entity e, float t0, float t1)
 
 void antilag_takeback(entity e, float t)
 {
-       e.antilag_saved_origin = e.origin;
+       if(e.vehicle)
+               antilag_takeback(e.vehicle, t);
+
+       if(!e.antilag_takenback)
+               e.antilag_saved_origin = e.origin;
+
        setorigin(e, antilag_takebackorigin(e, t));
+       e.antilag_takenback = TRUE;
 }
 
 void antilag_restore(entity e)
 {
+       if(e.vehicle)
+               antilag_restore(e.vehicle);
+
+       if(!e.antilag_takenback)
+               return;
+
        setorigin(e, e.antilag_saved_origin);
+       e.antilag_takenback = FALSE;
 }