From 4819cd87186846da4df5e276f2c3303c761530b2 Mon Sep 17 00:00:00 2001 From: terencehill Date: Sun, 29 Oct 2017 18:30:00 +0100 Subject: [PATCH] Bot AI: don't rate again items already rated with a higher ratingscale (currently bots playing certain CTF roles rate items twice with different rating scale and range) --- qcsrc/server/bot/default/havocbot/roles.qc | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/qcsrc/server/bot/default/havocbot/roles.qc b/qcsrc/server/bot/default/havocbot/roles.qc index df5e19d98..56133862b 100644 --- a/qcsrc/server/bot/default/havocbot/roles.qc +++ b/qcsrc/server/bot/default/havocbot/roles.qc @@ -9,6 +9,8 @@ #include "../bot.qh" #include "../navigation.qh" +.float bot_ratingscale; +.float bot_ratingscale_time; .float max_armorvalue; .float havocbot_role_timeout; @@ -113,6 +115,13 @@ void havocbot_goalrating_items(entity this, float ratingscale, vector org, float IL_EACH(g_items, it.bot_pickup, { + // ignore if bot already rated this item with a higher ratingscale + // NOTE: this code assumes each bot rates items in a different frame + if(it.bot_ratingscale_time == time && ratingscale < it.bot_ratingscale) + continue; + it.bot_ratingscale_time = time; + it.bot_ratingscale = ratingscale; + if(!it.solid) { if(!autocvar_bot_ai_timeitems) @@ -163,9 +172,8 @@ void havocbot_goalrating_items(entity this, float ratingscale, vector org, float if(!havocbot_goalrating_item_pickable_check_players(this, org, it, o)) continue; - - rating = it.bot_pickupevalfunc(this, it); + rating = it.bot_pickupevalfunc(this, it); if(rating > 0) navigation_routerating(this, it, rating * ratingscale, 2000); }); -- 2.39.2