#include "navigation.qh"
-#include <server/defs.qh>
-#include <server/miscfunctions.qh>
-#include "cvars.qh"
-
-#include "bot.qh"
-#include "waypoints.qh"
-
-#include <common/t_items.qh>
-
-#include <common/items/_mod.qh>
-
#include <common/constants.qh>
-#include <common/net_linked.qh>
+#include <common/items/_mod.qh>
#include <common/mapobjects/func/ladder.qh>
+#include <common/mapobjects/trigger/hurt.qh>
#include <common/mapobjects/trigger/jumppads.qh>
+#include <common/net_linked.qh>
+#include <common/stats.qh>
+#include <common/weapons/_all.qh>
+#include <server/bot/api.qh>
+#include <server/bot/default/bot.qh>
+#include <server/bot/default/cvars.qh>
+#include <server/bot/default/waypoints.qh>
+#include <server/items/items.qh>
.float speed;
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);
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)
}
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)
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;
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
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)
{
navigation_poproute(this);
++removed_goals;
- if(this.goalcurrent && this.goalcurrent.wpflags & WAYPOINTFLAG_TELEPORT)
+ if(this.goalcurrent && (this.goalcurrent.wpflags & WAYPOINTFLAG_TELEPORT))
return removed_goals;
}
}