]> 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 cc6f3694b9897bd3126c826b1a3d6e964e14e505..fd0dc7861e20b1cee25cdfaa0545231952d78d57 100644 (file)
@@ -14,8 +14,8 @@ void spawnfunc_info_null (void)
 void setanim(entity e, vector anim, float looping, float override, float restart)
 {
        if (!anim)
-               return; // no animation was given to us! We can't use this. 
-               
+               return; // no animation was given to us! We can't use this.
+
        if (anim_x == e.animstate_startframe)
        if (anim_y == e.animstate_numframes)
        if (anim_z == e.animstate_framerate)
@@ -294,7 +294,7 @@ void SUB_CalcMove_Bezier (vector tcontrol, vector tdest, float tspeedtype, float
        // the thinking is now done by the controller
        self.think = SUB_NullThink; // for PushMove
        self.nextthink = self.ltime + traveltime;
-       
+
        // invoke controller
        self = controller;
        self.think();
@@ -467,7 +467,7 @@ void tracebox_antilag_force_wz (entity source, vector v1, vector mi, vector ma,
        // check whether antilagged traces are enabled
        if (lag < 0.001)
                lag = 0;
-       if not(IS_REAL_CLIENT(forent))
+       if (!IS_REAL_CLIENT(forent))
                lag = 0; // only antilag for clients
 
        // change shooter to SOLID_BBOX so the shot can hit corpses
@@ -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);
 }
 
 /*
@@ -799,7 +803,7 @@ void LODmodel_attach()
        }
 
        if(self.lodmodelindex1)
-               if not(self.SendEntity)
+               if (!self.SendEntity)
                        SetCustomizer(self, LOD_customize, LOD_uncustomize);
 }