X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fbot%2Fdefault%2Fnavigation.qc;h=e26c219a7500223ad24cf1f963af9e97a0061496;hb=0514f7948727cfa572b33bd29d1bdf2c13cd866d;hp=1f5377bb388b9d86f887931bcdc8f6ca19e67d24;hpb=e73e4bd4706f18bb2de0f52fa8beed6ee0e770ce;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/bot/default/navigation.qc b/qcsrc/server/bot/default/navigation.qc index 1f5377bb3..e26c219a7 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,7 +222,7 @@ 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)) @@ -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 @@ -1654,7 +1651,7 @@ int navigation_poptouchedgoals(entity this) if(this.lastteleporttime > 0 && TELEPORT_USED(this, this.goalcurrent)) { if(this.aistatus & AI_STATUS_WAYPOINT_PERSONAL_GOING) - if(this.goalcurrent.wpflags & WAYPOINTFLAG_PERSONAL && this.goalcurrent.owner==this) + if((this.goalcurrent.wpflags & WAYPOINTFLAG_PERSONAL) && this.goalcurrent.owner==this) { this.aistatus &= ~AI_STATUS_WAYPOINT_PERSONAL_GOING; this.aistatus |= AI_STATUS_WAYPOINT_PERSONAL_REACHED; @@ -1696,7 +1693,7 @@ int navigation_poptouchedgoals(entity this) if (tele_ent && TELEPORT_USED(this, tele_ent)) { if (this.aistatus & AI_STATUS_WAYPOINT_PERSONAL_GOING) - if (tele_ent.wpflags & WAYPOINTFLAG_PERSONAL && tele_ent.owner == this) + if ((tele_ent.wpflags & WAYPOINTFLAG_PERSONAL) && tele_ent.owner == this) { this.aistatus &= ~AI_STATUS_WAYPOINT_PERSONAL_GOING; this.aistatus |= AI_STATUS_WAYPOINT_PERSONAL_REACHED; @@ -1718,7 +1715,7 @@ int navigation_poptouchedgoals(entity this) // Loose goal touching check when running // check goalstack01 to make sure waypoint isn't the final goal - if(this.aistatus & AI_STATUS_RUNNING && this.goalcurrent.classname == "waypoint" && !(this.goalcurrent.wpflags & WAYPOINTFLAG_JUMP) + if((this.aistatus & AI_STATUS_RUNNING) && this.goalcurrent.classname == "waypoint" && !(this.goalcurrent.wpflags & WAYPOINTFLAG_JUMP) && this.goalstack01 && !wasfreed(this.goalstack01) && vdist(vec2(this.velocity), >=, autocvar_sv_maxspeed)) { vector gco = this.goalcurrent.origin; @@ -1733,7 +1730,7 @@ int navigation_poptouchedgoals(entity this) { // Detect personal waypoints if(this.aistatus & AI_STATUS_WAYPOINT_PERSONAL_GOING) - if(this.goalcurrent.wpflags & WAYPOINTFLAG_PERSONAL && this.goalcurrent.owner==this) + if((this.goalcurrent.wpflags & WAYPOINTFLAG_PERSONAL) && this.goalcurrent.owner==this) { this.aistatus &= ~AI_STATUS_WAYPOINT_PERSONAL_GOING; this.aistatus |= AI_STATUS_WAYPOINT_PERSONAL_REACHED; @@ -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; @@ -1769,7 +1766,7 @@ int navigation_poptouchedgoals(entity this) // Detect personal waypoints if(this.aistatus & AI_STATUS_WAYPOINT_PERSONAL_GOING) - if(this.goalcurrent.wpflags & WAYPOINTFLAG_PERSONAL && this.goalcurrent.owner==this) + if((this.goalcurrent.wpflags & WAYPOINTFLAG_PERSONAL) && this.goalcurrent.owner==this) { this.aistatus &= ~AI_STATUS_WAYPOINT_PERSONAL_GOING; this.aistatus |= AI_STATUS_WAYPOINT_PERSONAL_REACHED;