]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Bot AI: if the nearest waypoint of a dynamic goal is inside the goal itself or bot...
authorterencehill <piuntn@gmail.com>
Tue, 21 Nov 2017 14:21:33 +0000 (15:21 +0100)
committerterencehill <piuntn@gmail.com>
Tue, 21 Nov 2017 19:18:33 +0000 (20:18 +0100)
qcsrc/server/bot/default/navigation.qc

index 8e326fe1bb32297d338332c4847aed73fc50f3f8..e28509618a821a18949cf758ef0b3d2b70712014 100644 (file)
@@ -1474,13 +1474,17 @@ bool navigation_routetogoal(entity this, entity e, vector startposition)
                // often path can be optimized by not adding the nearest waypoint
                if (this.goalentity.navigation_dynamicgoal || autocvar_g_waypointeditor)
                {
-                       set_tracewalk_dest(this.goalentity, nearest_wp.enemy.origin, true);
-                       if (trace_ent == this || (vdist(tracewalk_dest - nearest_wp.enemy.origin, <, 1050)
-                               && vlen2(tracewalk_dest - nearest_wp.enemy.origin) < vlen2(nearest_wp.origin - nearest_wp.enemy.origin)
-                               && tracewalk(this, nearest_wp.enemy.origin, STAT(PL_MIN, this), STAT(PL_MAX, this),
-                               tracewalk_dest, tracewalk_dest_height, bot_navigation_movemode)))
+                       if (nearest_wp.enemy.wpcost < autocvar_bot_ai_strategyinterval_movingtarget
+                               && vdist(vec2(this.goalentity.origin - nearest_wp.origin), >, 16))
                        {
-                               e = nearest_wp.enemy;
+                               set_tracewalk_dest(this.goalentity, nearest_wp.enemy.origin, true);
+                               if (trace_ent == this || (vdist(tracewalk_dest - nearest_wp.enemy.origin, <, 1050)
+                                       && vlen2(tracewalk_dest - nearest_wp.enemy.origin) < vlen2(nearest_wp.origin - nearest_wp.enemy.origin)
+                                       && tracewalk(this, nearest_wp.enemy.origin, STAT(PL_MIN, this), STAT(PL_MAX, this),
+                                       tracewalk_dest, tracewalk_dest_height, bot_navigation_movemode)))
+                               {
+                                       e = nearest_wp.enemy;
+                               }
                        }
                }
                else if(navigation_item_islinked(nearest_wp.enemy, this.goalentity))