From 6aabe20e9547b307f170f1587d7c4ec0db9223bf Mon Sep 17 00:00:00 2001 From: jeefo Date: Wed, 12 Apr 2023 21:36:48 +0300 Subject: [PATCH] aim: do not pick enemies wearing FL_NOTARGET flag --- inc/yapb.h | 1 + src/combat.cpp | 11 +++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/inc/yapb.h b/inc/yapb.h index 5819871..26e2167 100644 --- a/inc/yapb.h +++ b/inc/yapb.h @@ -813,6 +813,7 @@ private: bool lookupEnemies (); bool isEnemyHidden (edict_t *enemy); bool isEnemyInvincible (edict_t *enemy); + bool isEnemyNoTarget (edict_t *enemy); bool isFriendInLineOfFire (float distance); bool isGroupOfEnemies (const Vector &location, int numEnemies = 1, float radius = 256.0f); bool isPenetrableObstacle (const Vector &dest); diff --git a/src/combat.cpp b/src/combat.cpp index 5c590cc..3d6f693 100644 --- a/src/combat.cpp +++ b/src/combat.cpp @@ -92,7 +92,7 @@ bool Bot::isEnemyInvincible (edict_t *enemy) { if (!cv_check_enemy_invincibility.bool_ () || game.isNullEntity (enemy)) { return false; } - entvars_t &v = enemy->v; + const entvars_t &v = enemy->v; if (v.solid < SOLID_BBOX) { return true; @@ -109,10 +109,17 @@ bool Bot::isEnemyInvincible (edict_t *enemy) { return false; } +bool Bot::isEnemyNoTarget (edict_t *enemy) { + if (game.isNullEntity (enemy)) { + return false; + } + return !!(enemy->v.flags & FL_NOTARGET); +} + bool Bot::checkBodyParts (edict_t *target) { // this function checks visibility of a bot target. - if (isEnemyHidden (target) || isEnemyInvincible (target)) { + if (isEnemyHidden (target) || isEnemyInvincible (target) || isEnemyNoTarget (target)) { m_enemyParts = Visibility::None; m_enemyOrigin = nullptr;