]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/bot/havocbot/roles.qc
Merge branch 'Mario/melee_mutator' into Mario/mutators
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / bot / havocbot / roles.qc
index d0c10651b88134d364377b5f8edb641658710ad7..17b80224d5ed98f5f8b3c4c6245cc405418b0057 100644 (file)
@@ -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)
@@ -85,8 +85,8 @@ void havocbot_goalrating_items(float ratingscale, vector org, float sradius)
                                        if( head.armorvalue && player.armorvalue > self.armorvalue)
                                                continue;
 
-                                       if( head.weapons )
-                                       if( (player.weapons & head.weapons) != head.weapons)
+                                       if( !WEPSET_EMPTY_E(head) )
+                                       if( !WEPSET_CONTAINS_ALL_EE(player, head) )
                                                continue;
 
                                        if (head.ammo_shells && player.ammo_shells > self.ammo_shells)
@@ -162,21 +162,12 @@ void havocbot_goalrating_enemyplayers(float ratingscale, vector org, float sradi
        FOR_EACH_PLAYER(head)
        {
                // TODO: Merge this logic with the bot_shouldattack function
-               if (self != head)
-               if (head.health > 0)
-               if ((noteam && (!bot_ignore_bots || clienttype(head) == CLIENTTYPE_REAL)) || head.team != self.team)
+               if(bot_shouldattack(head))
                {
                        distance = vlen(head.origin - org);
                        if (distance < 100 || distance > sradius)
                                continue;
 
-                       if (head.freezetag_frozen)
-                               continue;
-
-                       if(g_minstagib)
-                       if(head.items & IT_STRENGTH)
-                               continue;
-
                        // rate only visible enemies
                        /*
                        traceline(self.origin + self.view_ofs, head.origin, MOVE_NOMONSTERS, self);
@@ -212,25 +203,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()
@@ -293,31 +265,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_ChooseRule))
+               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();
 }