]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/g_subs.qc
Apply antilag to monsters in g_subs
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / g_subs.qc
index 834bb47116551b4a4e013d58189c78a37dc32838..fd0dc7861e20b1cee25cdfaa0545231952d78d57 100644 (file)
@@ -481,6 +481,8 @@ void tracebox_antilag_force_wz (entity source, vector v1, vector mi, vector ma,
                FOR_EACH_PLAYER(player)
                        if(player != forent)
                                antilag_takeback(player, time - lag);
+               FOR_EACH_MONSTER(player)
+                       antilag_takeback(player, time - lag);
        }
 
        // do the trace
@@ -495,6 +497,8 @@ void tracebox_antilag_force_wz (entity source, vector v1, vector mi, vector ma,
                FOR_EACH_PLAYER(player)
                        if(player != forent)
                                antilag_restore(player);
+               FOR_EACH_MONSTER(player)
+                       antilag_restore(player);
        }
 
        // restore shooter solid type
@@ -534,7 +538,7 @@ void WarpZone_tracebox_antilag (entity source, vector v1, vector mi, vector ma,
        tracebox_antilag_force_wz(source, v1, mi, ma, v2, nomonst, forent, lag, TRUE);
 }
 
-float tracebox_inverted (vector v1, vector mi, vector ma, vector v2, float nomonsters, entity forent, float stopatentity) // returns the number of traces done, for benchmarking
+float tracebox_inverted (vector v1, vector mi, vector ma, vector v2, float nomonsters, entity forent, float stopatentity, entity ignorestopatentity) // returns the number of traces done, for benchmarking
 {
        vector pos, dir, t;
        float nudge;
@@ -552,7 +556,7 @@ float tracebox_inverted (vector v1, vector mi, vector ma, vector v2, float nomon
 
        for(;;)
        {
-               if((pos - v1) * dir >= (v2 - v1) * dir)
+               if(pos * dir >= v2 * dir)
                {
                        // went too far
                        trace_fraction = 1;
@@ -587,7 +591,7 @@ float tracebox_inverted (vector v1, vector mi, vector ma, vector v2, float nomon
                                pos = t + dir * nudge;
 
                                // but if we hit an entity, stop RIGHT before it
-                               if(stopatentity && stopentity)
+                               if(stopatentity && stopentity && stopentity != ignorestopatentity)
                                {
                                        trace_ent = stopentity;
                                        trace_endpos = t;
@@ -612,9 +616,9 @@ float tracebox_inverted (vector v1, vector mi, vector ma, vector v2, float nomon
        }
 }
 
-void traceline_inverted (vector v1, vector v2, float nomonsters, entity forent, float stopatentity)
+void traceline_inverted (vector v1, vector v2, float nomonsters, entity forent, float stopatentity, entity ignorestopatentity)
 {
-       tracebox_inverted(v1, '0 0 0', '0 0 0', v2, nomonsters, forent, stopatentity);
+       tracebox_inverted(v1, '0 0 0', '0 0 0', v2, nomonsters, forent, stopatentity, ignorestopatentity);
 }
 
 /*