1 float BOT_TYPE_AUTOURRE = 0;
2 float BOT_TYPE_AUTOMAUVE = 1;
3 float BOT_TYPE_URREBOT = 2;
4 float BOT_TYPE_MAUVEBOT = 3;
9 MauveBot v1.0 for Nexuiz
12 float intermission_running;
20 float THREAT_UNFLAGGED = 0;
21 float THREAT_IGNORE = -1;
23 float DODGE_DIST = 500;
24 float SEARCH_DIST = 1000;
30 entity(float bottype) add_MauveBot;
31 void() remove_MauveBot;
34 UrreBot 1.5 for Nexuiz
37 entity navnode_chain, urrebot_chain;
38 float navnodes, loadstep;
39 .entity list, link0, link1, link2, link3, link4, link5, link6, link7, link8, link9;
40 .entity link10, link11, link12, link13, link14, link15, link16, link17, link18, link19;
42 .float lflags0, lflags1, lflags2, lflags3, lflags4, lflags5, lflags6, lflags7, lflags8, lflags9;
43 .float lflags10, lflags11, lflags12, lflags13, lflags14, lflags15, lflags16, lflags17, lflags18, lflags19;
47 float search_distance;
48 float minisearch_distance;
49 float stratsearch_distance;
53 .float(entity c_item) evalfunc;
63 //.float aimblocked; // LordHavoc: prevents firing at a stale aimpoint
84 float urrebots, urrebots_strategytime, urrebots_combattime, urrebots_navopt;
90 entity(vector org, vector minss, vector maxss) FindCurrentNavNode;
91 void(float distance) UrreBotPath;
97 void() OptimiseNavigation;
98 entity(float bottype) UrreBotAdd;
100 vector(vector point, entity current_space, entity goal_space) ClampPointToSpace;
102 float(vector m1, vector m2, vector m3, vector m4) boxesoverlap = {return m2_x >= m3_x && m1_x <= m4_x && m2_y >= m3_y && m1_y <= m4_y && m2_z >= m3_z && m1_z <= m4_z;};
103 float(vector smins, vector smaxs, vector bmins, vector bmaxs) boxenclosed = {return smins_x >= bmins_x && smaxs_x <= bmaxs_x && smins_y >= bmins_y && smaxs_y <= bmaxs_y && smins_z >= bmins_z && smaxs_z <= bmaxs_z;};
107 float JoinBestTeam(entity pl, float only_return_best);
110 void() AutoBotRemove =
114 ent = findchain(classname, "player");
117 if (clienttype(ent) == CLIENTTYPE_BOT)
119 if (ent.bot_type != BOT_TYPE_URREBOT && ent.bot_type != BOT_TYPE_MAUVEBOT)
123 if (urrebot_chain == self)
124 urrebot_chain = self.list;
127 t = find(world, classname, "player");
132 t = find(t, classname, "player");
155 urrebots_strategytime = cvar("urrebots_strategytime");
156 urrebots_combattime = cvar("urrebots_combattime");
157 stratsearch_distance = cvar("urrebots_stratsearch_dist");
158 minisearch_distance = cvar("urrebots_minisearch_dist");
159 if (cvar("urrebots") || cvar("bot_number"))
167 else if (loadstep == 1)
173 else if (loadstep == 2)
177 OptimiseNavigation();
181 else if (loadstep == 3)
189 f = cvar("urrebots");
190 if (urrebots < f && loadstep == 4)
192 bot = UrreBotAdd(BOT_TYPE_URREBOT);
193 bot.bot_type = BOT_TYPE_URREBOT;
200 f = cvar("mauvebots");
203 bot = add_MauveBot(BOT_TYPE_MAUVEBOT);
204 bot.bot_type = BOT_TYPE_MAUVEBOT;
207 else if (f < mauvebots)
211 f = cvar("bot_number");
215 if (navnodes && loadstep == 4)
217 bot = UrreBotAdd(BOT_TYPE_AUTOURRE);
220 bot.bot_type = BOT_TYPE_AUTOURRE;
226 bot = add_MauveBot(BOT_TYPE_AUTOMAUVE);
229 bot.bot_type = BOT_TYPE_AUTOMAUVE;
234 else if (f < bot_number)