X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fbot%2Fdefault%2Fnavigation.qc;h=8fc33448b9401cb5c1f5faf6f246c0c6b3429d28;hb=c79acd2307d83b4edb1284cd94bce8c634ce1864;hp=ebc18a6875353a2306ea07c6304d989860b76cac;hpb=92ed00b08d16fb73df84c6aaf5e24cf4fe71d7c5;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/bot/default/navigation.qc b/qcsrc/server/bot/default/navigation.qc index ebc18a687..8fc33448b 100644 --- a/qcsrc/server/bot/default/navigation.qc +++ b/qcsrc/server/bot/default/navigation.qc @@ -1,20 +1,18 @@ #include "navigation.qh" -#include -#include -#include "cvars.qh" - -#include "bot.qh" -#include "waypoints.qh" - -#include - -#include - #include -#include +#include #include +#include #include +#include +#include +#include +#include +#include +#include +#include +#include .float speed; @@ -224,11 +222,11 @@ bool navigation_check_submerged_state(entity ent, vector pos) bool navigation_checkladders(entity e, vector org, vector m1, vector m2, vector end, vector end2, int movemode) { - IL_EACH(g_ladders, it.classname == "func_ladder", + IL_EACH(g_ladders, true, { if(it.bot_pickup) - if(boxesoverlap(org + m1 + '-1 -1 -1', org + m2 + '1 1 1', it.absmin, it.absmax)) - if(boxesoverlap(end, end2, it.absmin + vec2(m1) + '-1 -1 0', it.absmax + vec2(m2) + '1 1 0')) + if(boxesoverlap(org + m1, org + m2, it.absmin, it.absmax)) + if(boxesoverlap(end, end2, it.absmin + vec2(m1), it.absmax + vec2(m2))) { vector top = org; top.z = it.absmax.z + (PL_MAX_CONST.z - PL_MIN_CONST.z); @@ -925,7 +923,7 @@ entity navigation_findnearestwaypoint_withdist_except(entity ent, float walkfrom vector pm1 = ent.origin + ent.mins; vector pm2 = ent.origin + ent.maxs; - if (autocvar_g_waypointeditor && !IS_BOT_CLIENT(ent)) + if (waypointeditor_enabled && !IS_BOT_CLIENT(ent)) { // this code allows removing waypoints in the air and seeing jumppad/telepport waypoint links // FIXME it causes a bug where a waypoint spawned really close to another one (max 16 qu) @@ -1374,7 +1372,7 @@ void navigation_routerating(entity this, entity e, float f, float rangebias) } else { - if(autocvar_g_waypointeditor && e.nearestwaypointtimeout >= 0 && time > e.nearestwaypointtimeout) + if(waypointeditor_enabled && e.nearestwaypointtimeout >= 0 && time > e.nearestwaypointtimeout) e.nearestwaypoint = NULL; if ((!e.nearestwaypoint || e.navigation_dynamicgoal) @@ -1400,7 +1398,7 @@ void navigation_routerating(entity this, entity e, float f, float rangebias) if(e.navigation_dynamicgoal) e.nearestwaypointtimeout = time + 2; - else if(autocvar_g_waypointeditor) + else if(waypointeditor_enabled) e.nearestwaypointtimeout = time + 3 + random() * 2; } nwp = e.nearestwaypoint; @@ -1459,8 +1457,7 @@ bool navigation_routetogoal(entity this, entity e, vector startposition) this.wp_goal_prev0 = e; } - if(g_jetpack) - if(e==this.navigation_jetpack_goal) + if((this.items & IT_JETPACK) && e == this.navigation_jetpack_goal) return true; // if it can reach the goal there is nothing more to do @@ -1490,7 +1487,7 @@ bool navigation_routetogoal(entity this, entity e, vector startposition) if(nearest_wp && nearest_wp.enemy && !(nearest_wp.enemy.wpflags & WPFLAGMASK_NORELINK)) { // often path can be optimized by not adding the nearest waypoint - if (this.goalentity.navigation_dynamicgoal || autocvar_g_waypointeditor) + if (this.goalentity.navigation_dynamicgoal || waypointeditor_enabled) { if (nearest_wp.enemy.wpcost < autocvar_bot_ai_strategyinterval_movingtarget) { @@ -1741,7 +1738,7 @@ int navigation_poptouchedgoals(entity this) navigation_poproute(this); ++removed_goals; - if(this.goalcurrent && this.goalcurrent.wpflags & WAYPOINTFLAG_TELEPORT) + if(this.goalcurrent && (this.goalcurrent.wpflags & WAYPOINTFLAG_TELEPORT)) return removed_goals; } } @@ -1756,7 +1753,7 @@ int navigation_poptouchedgoals(entity this) gc_min = this.goalcurrent.origin - '1 1 1' * 12; gc_max = this.goalcurrent.origin + '1 1 1' * 12 + eZ * (jumpheight_vec.z + STAT(PL_MIN, this).z); } - if (time < this.ladder_time) + if (this.ladder_entity) { if (!boxesoverlap(this.absmin, this.absmax - eZ * STAT(PL_MAX, this).z, gc_min, gc_max)) break;