X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fbot%2Fnavigation.qc;h=99e3901b2b3cb095b771a89286c9b5ac1bcae721;hb=70b84d37e2cf1d5336c327cb43593024de2a2c6c;hp=d80f8336c8ba179bd52e862bc2807181d92efebc;hpb=530e06120a7b41f6175b1144fedf6903da8c13b0;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/bot/navigation.qc b/qcsrc/server/bot/navigation.qc index d80f8336c..99e3901b2 100644 --- a/qcsrc/server/bot/navigation.qc +++ b/qcsrc/server/bot/navigation.qc @@ -1,9 +1,20 @@ +#include "navigation.qh" +#include "../_all.qh" + +#include "bot.qh" +#include "waypoints.qh" + +#include "../t_items.qh" + +#include "../../common/constants.qh" +#include "../../common/triggers/trigger/jumppads.qh" + void bot_debug(string input) { switch(autocvar_bot_debug) { - case 1: dprint(input); break; - case 2: print(input); break; + case 1: LOG_TRACE(input); break; + case 2: LOG_INFO(input); break; } } @@ -11,7 +22,7 @@ void bot_debug(string input) // can be traveled, used for waypoint linking and havocbot float tracewalk(entity e, vector start, vector m1, vector m2, vector end, float movemode) -{ +{SELFPARAM(); vector org; vector move; vector dir; @@ -221,7 +232,7 @@ float tracewalk(entity e, vector start, vector m1, vector m2, vector end, float // completely empty the goal stack, used when deciding where to go void navigation_clearroute() -{ +{SELFPARAM(); //print("bot ", etos(self), " clear\n"); self.navigation_hasgoals = false; self.goalcurrent = world; @@ -265,7 +276,7 @@ void navigation_clearroute() // That means, if the stack overflows, the bot will know how to do the FIRST 32 // steps to the goal, and then recalculate the path. void navigation_pushroute(entity e) -{ +{SELFPARAM(); //print("bot ", etos(self), " push ", etos(e), "\n"); self.goalstack31 = self.goalstack30; self.goalstack30 = self.goalstack29; @@ -305,7 +316,7 @@ void navigation_pushroute(entity e) // (in other words: remove a prerequisite for reaching the later goals) // (used when a spawnfunc_waypoint is reached) void navigation_poproute() -{ +{SELFPARAM(); //print("bot ", etos(self), " pop\n"); self.goalcurrent = self.goalstack01; self.goalstack01 = self.goalstack02; @@ -387,7 +398,7 @@ entity navigation_findnearestwaypoint_withdist_except(entity ent, float walkfrom } org = ent.origin + 0.5 * (ent.mins + ent.maxs); - org.z = ent.origin.z + ent.mins.z - PL_MIN_z; // player height + org.z = ent.origin.z + ent.mins.z - PL_MIN.z; // player height // TODO possibly make other code have the same support for bboxes if(ent.tag_entity) org = org + ent.tag_entity.origin; @@ -438,7 +449,7 @@ entity navigation_findnearestwaypoint(entity ent, float walkfromwp) // finds the waypoints near the bot initiating a navigation query float navigation_markroutes_nearestwaypoints(entity waylist, float maxdist) -{ +{SELFPARAM(); entity head; vector v, m1, m2, diff; float c; @@ -509,7 +520,7 @@ void navigation_markroutes_checkwaypoint(entity w, entity wp, float cost2, vecto // queries the entire spawnfunc_waypoint network for pathes leading away from the bot void navigation_markroutes(entity fixed_source_waypoint) -{ +{SELFPARAM(); entity w, wp, waylist; float searching, cost, cost2; vector p; @@ -668,7 +679,7 @@ void navigation_markroutes_inverted(entity fixed_source_waypoint) // updates the best goal according to a weighted calculation of travel cost and item value of a new proposed item void navigation_routerating(entity e, float f, float rangebias) -{ +{SELFPARAM(); entity nwp; vector o; if (!e) @@ -710,7 +721,7 @@ void navigation_routerating(entity e, float f, float rangebias) float zdistance, xydistance, cost, t, fuel; vector down, npa, npb; - down = '0 0 -1' * (PL_MAX_z - PL_MIN_z) * 10; + down = '0 0 -1' * (PL_MAX.z - PL_MIN.z) * 10; do{ npa = pointa + down; @@ -850,7 +861,7 @@ void navigation_routerating(entity e, float f, float rangebias) // adds an item to the the goal stack with the path to a given item float navigation_routetogoal(entity e, vector startposition) -{ +{SELFPARAM(); self.goalentity = e; // if there is no goal, just exit @@ -896,7 +907,7 @@ float navigation_routetogoal(entity e, vector startposition) // removes any currently touching waypoints from the goal stack // (this is how bots detect if they reached a goal) void navigation_poptouchedgoals() -{ +{SELFPARAM(); vector org, m1, m2; org = self.origin; m1 = org + self.mins; @@ -982,7 +993,7 @@ void navigation_poptouchedgoals() // begin a goal selection session (queries spawnfunc_waypoint network) void navigation_goalrating_start() -{ +{SELFPARAM(); if(self.aistatus & AI_STATUS_STUCK) return; @@ -996,7 +1007,7 @@ void navigation_goalrating_start() // ends a goal selection session (updates goal stack to the best goal) void navigation_goalrating_end() -{ +{SELFPARAM(); if(self.aistatus & AI_STATUS_STUCK) return; @@ -1056,7 +1067,7 @@ void botframe_updatedangerousobjects(float maxupdate) } void navigation_unstuck() -{ +{SELFPARAM(); float search_radius = 1000; if (!autocvar_bot_wander_enable) @@ -1153,7 +1164,7 @@ void debugresetnodes() } void debugnode(vector node) -{ +{SELFPARAM(); if (!IS_PLAYER(self)) return; @@ -1196,7 +1207,7 @@ void debugnodestatus(vector position, float status) // Debug the goal stack visually void debuggoalstack() -{ +{SELFPARAM(); entity goal; vector org, go;