]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/bot/default/navigation.qc
Add parentheses
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / bot / default / navigation.qc
index 7c7f7e1e1264a8e7b9eaeb98be8f7780efd1cd85..c666fa94e3f308ff4694ba5e08a938e202b661b5 100644 (file)
@@ -47,6 +47,11 @@ bool navigation_goalrating_timeout(entity this)
        return this.bot_strategytime < time;
 }
 
+void navigation_goalrating_timeout_extend_if_needed(entity this, float seconds)
+{
+       this.bot_strategytime = max(this.bot_strategytime, time + seconds);
+}
+
 #define MAX_CHASE_DISTANCE 700
 bool navigation_goalrating_timeout_can_be_anticipated(entity this)
 {
@@ -917,7 +922,7 @@ entity navigation_findnearestwaypoint_withdist_except(entity ent, float walkfrom
        vector pm2 = ent.origin + ent.maxs;
 
        // do two scans, because box test is cheaper
-       IL_EACH(g_waypoints, it != ent && it != except && !(it.wpflags & WAYPOINTFLAG_TELEPORT),
+       IL_EACH(g_waypoints, it != ent && it != except && !(it.wpflags & (WAYPOINTFLAG_TELEPORT | WAYPOINTFLAG_JUMP)),
        {
                if(boxesoverlap(pm1, pm2, it.absmin, it.absmax))
                {
@@ -948,7 +953,7 @@ entity navigation_findnearestwaypoint_withdist_except(entity ent, float walkfrom
                waypoint_clearlinks(ent); // initialize wpXXmincost fields
                IL_EACH(g_waypoints, it != ent,
                {
-                       if(walkfromwp && (it.wpflags & WAYPOINTFLAG_NORELINK))
+                       if (walkfromwp && (it.wpflags & WPFLAGMASK_NORELINK))
                                continue;
 
                        set_tracewalk_dest(ent, it.origin, false);
@@ -964,7 +969,7 @@ entity navigation_findnearestwaypoint_withdist_except(entity ent, float walkfrom
        // box check failed, try walk
        IL_EACH(g_waypoints, it != ent,
        {
-               if(walkfromwp && (it.wpflags & WAYPOINTFLAG_NORELINK))
+               if (walkfromwp && (it.wpflags & WPFLAGMASK_NORELINK))
                        continue;
                v = it.origin;
 
@@ -1332,10 +1337,10 @@ void navigation_routerating(entity this, entity e, float f, float rangebias)
                        t += xydistance / autocvar_g_jetpack_maxspeed_side;
                        fuel = t * autocvar_g_jetpack_fuel * 0.8;
 
-                       LOG_DEBUG("jetpack ai: required fuel ", ftos(fuel), ", have ", ftos(GetResourceAmount(this, RESOURCE_FUEL)));
+                       LOG_DEBUG("jetpack ai: required fuel ", ftos(fuel), ", have ", ftos(GetResource(this, RES_FUEL)));
 
                        // enough fuel ?
-                       if(GetResourceAmount(this, RESOURCE_FUEL) > fuel || (this.items & IT_UNLIMITED_WEAPON_AMMO))
+                       if(GetResource(this, RES_FUEL) > fuel || (this.items & IT_UNLIMITED_WEAPON_AMMO))
                        {
                                // Estimate cost
                                // (as onground costs calculation is mostly based on distances, here we do the same establishing some relationship
@@ -1577,7 +1582,7 @@ bool navigation_shortenpath(entity this)
 
        next = this.goalstack01;
        // if for some reason the bot is closer to the next goal, pop the current one
-       if (!IS_MOVABLE(next) // already checked in the previous case
+       if (!IS_MOVABLE(next) && !(this.goalcurrent.wpflags & (WAYPOINTFLAG_TELEPORT | WAYPOINTFLAG_JUMP))
                && vlen2(this.goalcurrent.origin - next.origin) > vlen2(next.origin - this.origin)
                && checkpvs(this.origin + this.view_ofs, next))
        {
@@ -1771,7 +1776,7 @@ entity navigation_get_really_close_waypoint(entity this)
        if(vdist(wp.origin - this.origin, >, 50))
        {
                wp = NULL;
-               IL_EACH(g_waypoints, !(it.wpflags & WAYPOINTFLAG_TELEPORT),
+               IL_EACH(g_waypoints, !(it.wpflags & (WAYPOINTFLAG_TELEPORT | WAYPOINTFLAG_JUMP)),
                {
                        if(vdist(it.origin - this.origin, <, 50))
                        {
@@ -1819,7 +1824,7 @@ void navigation_goalrating_end(entity this)
        this.goalstack31 = NULL;
 
        navigation_routetogoal(this, navigation_bestgoal, this.origin);
-       LOG_DEBUG("best goal ", this.goalcurrent.classname);
+       LOG_DEBUG("best goal ", navigation_bestgoal.classname);
 
        if (wp && this.goalcurrent == wp)
                navigation_poproute(this);
@@ -1903,7 +1908,7 @@ void navigation_unstuck(entity this)
        {
                // evaluate the next goal on the queue
                float d = vlen2(this.origin - bot_waypoint_queue_goal.origin);
-               LOG_DEBUG(this.netname, " evaluating ", bot_waypoint_queue_goal.classname, " with distance ", ftos(d));
+               LOG_DEBUG(this.netname, " evaluating ", bot_waypoint_queue_goal.classname, " with squared distance ", ftos(d));
                set_tracewalk_dest(bot_waypoint_queue_goal, this.origin, false);
                if (tracewalk(this, this.origin, STAT(PL_MIN, this), STAT(PL_MAX, this),
                        tracewalk_dest, tracewalk_dest_height, bot_navigation_movemode))