X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fserver%2Fbot%2Fhavocbot%2Froles.qc;h=f682b692630449eef191a779bb9ea8a981e81cd9;hp=91eb2ec1a5afbce4132a566baa3c2d115f480edc;hb=3adaa0873ad9eac20f32e6e3fc0455d4f9e044cd;hpb=616650bb18362024afeed71fed91d33dc1708d09 diff --git a/qcsrc/server/bot/havocbot/roles.qc b/qcsrc/server/bot/havocbot/roles.qc index 91eb2ec1a5..f682b69263 100644 --- a/qcsrc/server/bot/havocbot/roles.qc +++ b/qcsrc/server/bot/havocbot/roles.qc @@ -69,7 +69,7 @@ void havocbot_goalrating_items(float ratingscale, vector org, float sradius) if ( player.team == self.team ) { - if ( clienttype(player) != CLIENTTYPE_REAL || discard ) + if ( !IS_REAL_CLIENT(player) || discard ) continue; if( d > friend_distance) @@ -86,7 +86,7 @@ void havocbot_goalrating_items(float ratingscale, vector org, float sradius) continue; if( head.weapons ) - if( (player.weapons & head.weapons) != head.weapons) + if( head.weapons & ~player.weapons ) continue; if (head.ammo_shells && player.ammo_shells > self.ammo_shells) @@ -98,7 +98,10 @@ void havocbot_goalrating_items(float ratingscale, vector org, float sradius) if (head.ammo_rockets && player.ammo_rockets > self.ammo_rockets) continue; - if (head.ammo_cells && player.ammo_cells > self.ammo_cells ) + if (head.ammo_cells && player.ammo_cells > self.ammo_cells) + continue; + + if (head.ammo_plasma && player.ammo_plasma > self.ammo_plasma) continue; discard = FALSE; @@ -175,11 +178,11 @@ void havocbot_goalrating_enemyplayers(float ratingscale, vector org, float sradi continue; */ - if(head.flags & FL_INWATER || head.flags & FL_PARTIALGROUND) + if((head.flags & FL_INWATER) || (head.flags & FL_PARTIALGROUND)) continue; // not falling - if(head.flags & FL_ONGROUND == 0) + if((head.flags & FL_ONGROUND) == 0) { traceline(head.origin, head.origin + '0 0 -1500', TRUE, world); t = pointcontents(trace_endpos + '0 0 1'); @@ -203,25 +206,6 @@ void havocbot_goalrating_enemyplayers(float ratingscale, vector org, float sradi // choose a role according to the situation void havocbot_role_dm(); -//DOM: -//go to best items, or control points you don't own -void havocbot_role_dom() -{ - if(self.deadflag != DEAD_NO) - return; - - if (self.bot_strategytime < time) - { - self.bot_strategytime = time + autocvar_bot_ai_strategyinterval; - navigation_goalrating_start(); - havocbot_goalrating_controlpoints(10000, self.origin, 15000); - havocbot_goalrating_items(8000, self.origin, 8000); - //havocbot_goalrating_enemyplayers(3000, self.origin, 2000); - //havocbot_goalrating_waypoints(1, self.origin, 1000); - navigation_goalrating_end(); - } -} - //DM: //go to best items void havocbot_role_dm() @@ -284,31 +268,18 @@ void havocbot_chooserole_race() self.havocbot_role = havocbot_role_race; } -void havocbot_chooserole_dom() -{ - self.havocbot_role = havocbot_role_dom; -} - void havocbot_chooserole() { dprint("choosing a role...\n"); self.bot_strategytime = 0; - if (g_ctf) - havocbot_chooserole_ctf(); - else if (g_domination) - havocbot_chooserole_dom(); + if (MUTATOR_CALLHOOK(HavocBot_ChooseRole)) + return; else if (g_keyhunt) havocbot_chooserole_kh(); else if (g_race || g_cts) havocbot_chooserole_race(); else if (g_onslaught) havocbot_chooserole_ons(); - else if (g_keepaway) - havocbot_chooserole_ka(); - else if (g_freezetag) - havocbot_chooserole_ft(); - else if (g_assault) - havocbot_chooserole_ast(); else // assume anything else is deathmatch havocbot_chooserole_dm(); }