]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Tracewalk: make sure there's no obstacle while resurfacing
authorterencehill <piuntn@gmail.com>
Fri, 4 Aug 2017 13:46:45 +0000 (15:46 +0200)
committerterencehill <piuntn@gmail.com>
Fri, 4 Aug 2017 13:46:45 +0000 (15:46 +0200)
qcsrc/server/bot/default/navigation.qc

index 72a90104aca92d2d6008062a5a61284187a020a5..d545039468e4377f02d2bb8fc36a2ebbe627f8bb 100644 (file)
@@ -181,7 +181,15 @@ bool tracewalk(entity e, vector start, vector m1, vector m2, vector end, float e
                        {
                                tracebox(org, m1, m2, org - jumpheight_vec, movemode, e);
                                if (SUBMERGED(trace_endpos))
-                                       RESURFACE_LIMITED(trace_endpos, end.z);
+                               {
+                                       vector v = trace_endpos;
+                                       tracebox(v, m1, m2, end, movemode, e);
+                                       if(trace_endpos.z >= end.z - 1)
+                                       {
+                                               RESURFACE_LIMITED(v, trace_endpos.z);
+                                               trace_endpos = v;
+                                       }
+                               }
                                else if (trace_endpos.z > org.z - jumpheight_vec.z)
                                        tracebox(trace_endpos, m1, m2, trace_endpos + jumpheight_vec, movemode, e);
                                org = trace_endpos;