]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/bot/havocbot/roles.qc
Merge branch 'master' into terencehill/bot_fixes
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / bot / havocbot / roles.qc
index 2104c3443a00f79930061b0e63975c54c7b6dd33..bfa8f8436c3e5c30d47894ae5d0b51fa75806039 100644 (file)
@@ -1,3 +1,10 @@
+#include "../../_all.qh"
+
+#include "havocbot.qh"
+#include "role_keyhunt.qh"
+
+#include "../bot.qh"
+#include "../navigation.qh"
 
 .float max_armorvalue;
 .float havocbot_role_timeout;
@@ -12,7 +19,7 @@ void havocbot_goalrating_items(float ratingscale, vector org, float sradius)
        float rating, d, discard, distance, friend_distance, enemy_distance;
        vector o;
        ratingscale = ratingscale * 0.0001; // items are rated around 10000 already
-       head = findchainfloat(bot_pickup, TRUE);
+       head = findchainfloat(bot_pickup, true);
 
        while (head)
        {
@@ -30,7 +37,7 @@ void havocbot_goalrating_items(float ratingscale, vector org, float sradius)
                // Check if the item can be picked up safely
                if(head.classname == "droppedweapon")
                {
-                       traceline(o, o + '0 0 -1500', TRUE, world);
+                       traceline(o, o + '0 0 -1500', true, world);
 
                        d = pointcontents(trace_endpos + '0 0 1');
                        if(d & CONTENT_WATER || d & CONTENT_SLIME || d & CONTENT_LAVA)
@@ -57,7 +64,7 @@ void havocbot_goalrating_items(float ratingscale, vector org, float sradius)
 
                if(teamplay)
                {
-                       discard = FALSE;
+                       discard = false;
 
                        FOR_EACH_PLAYER(player)
                        {
@@ -77,7 +84,7 @@ void havocbot_goalrating_items(float ratingscale, vector org, float sradius)
 
                                        friend_distance = d;
 
-                                       discard = TRUE;
+                                       discard = true;
 
                                        if( head.health && player.health > self.health )
                                                continue;
@@ -98,10 +105,13 @@ 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;
+                                       discard = false;
                                }
                                else
                                {
@@ -149,8 +159,9 @@ void havocbot_goalrating_controlpoints(float ratingscale, vector org, float srad
 void havocbot_goalrating_enemyplayers(float ratingscale, vector org, float sradius)
 {
        entity head;
-       float t, noteam, distance;
-       noteam = ((self.team == 0) || !teamplay); // fteqcc sucks
+       int t;
+       float distance;
+       noref bool noteam = ((self.team == 0) || !teamplay);
 
        if (autocvar_bot_nofire)
                return;
@@ -181,7 +192,7 @@ void havocbot_goalrating_enemyplayers(float ratingscale, vector org, float sradi
                        // not falling
                        if((head.flags & FL_ONGROUND) == 0)
                        {
-                               traceline(head.origin, head.origin + '0 0 -1500', TRUE, world);
+                               traceline(head.origin, head.origin + '0 0 -1500', true, world);
                                t = pointcontents(trace_endpos + '0 0 1');
                                if( t != CONTENT_SOLID )
                                if(t & CONTENT_WATER || t & CONTENT_SLIME || t & CONTENT_LAVA)
@@ -230,12 +241,10 @@ void havocbot_chooserole()
 {
        dprint("choosing a role...\n");
        self.bot_strategytime = 0;
-       if (MUTATOR_CALLHOOK(HavocBot_ChooseRole))
+       if (MUTATOR_CALLHOOK(HavocBot_ChooseRole, self))
                return;
        else if (g_keyhunt)
                havocbot_chooserole_kh();
-       else if (g_onslaught)
-               havocbot_chooserole_ons();
        else // assume anything else is deathmatch
                havocbot_chooserole_dm();
 }