From 50e6939cd026f840af9f28113090afada2cdaeac Mon Sep 17 00:00:00 2001 From: jeefo Date: Sun, 4 Jun 2023 22:11:26 +0300 Subject: [PATCH] Revert "fix: enemy selection when several shielded enemies are visible. (#451)" This reverts commit dd1adab3b60113c4c55d4ae994e95d11ccfc02e3. --- src/combat.cpp | 34 ++++++++++------------------------ 1 file changed, 10 insertions(+), 24 deletions(-) diff --git a/src/combat.cpp b/src/combat.cpp index 3303517..0be473c 100644 --- a/src/combat.cpp +++ b/src/combat.cpp @@ -262,11 +262,10 @@ bool Bot::lookupEnemies () { // the old enemy is no longer visible or if (game.isNullEntity (newEnemy)) { - // setup potential visibility set from engine - auto set = game.getVisibilitySet (this, true); + auto set = game.getVisibilitySet (this, true); // setup potential visibility set from engine - // ignore shielded enemies, while we have others - Array shieldedEnemies {}; + // ignore shielded enemies, while we have real one + edict_t *shieldEnemy = nullptr; if (cv_attack_monsters.bool_ ()) { // search the world for monsters... @@ -296,10 +295,9 @@ bool Bot::lookupEnemies () { // search the world for players... for (const auto &client : util.getClients ()) { - if (client.team == m_team || client.ent == ent() || !(client.flags & (ClientFlags::Used | ClientFlags::Alive)) || !client.ent) { + if (!(client.flags & ClientFlags::Used) || !(client.flags & ClientFlags::Alive) || client.team == m_team || client.ent == ent () || !client.ent) { continue; } - player = client.ent; // check the engine PVS @@ -307,17 +305,15 @@ bool Bot::lookupEnemies () { continue; } - // extra skill player can see through smoke... if beeing attacked - if (m_difficulty == Difficulty::Expert && (player->v.button & (IN_ATTACK | IN_ATTACK2)) && m_viewDistance < m_maxViewDistance) { + // extra skill player can see thru smoke... if beeing attacked + if ((player->v.button & (IN_ATTACK | IN_ATTACK2)) && m_viewDistance < m_maxViewDistance && m_difficulty == Difficulty::Expert) { nearestDistance = cr::sqrf (m_maxViewDistance); } // see if bot can see the player... if (seesEnemy (player)) { - // low priority fo shielded enemies if (isEnemyBehindShield (player)) { - shieldedEnemies.push (player); - + shieldEnemy = player; continue; } float distance = player->v.origin.distanceSq (pev->origin); @@ -334,19 +330,9 @@ bool Bot::lookupEnemies () { } } m_enemyUpdateTime = game.time () + (usesKnife () ? 1.0f : 0.75f); - - // If enemy is not selected yet then check visible shielded enemies - if (game.isNullEntity (newEnemy) && shieldedEnemies.length () > 0) { - nearestDistance = cr::sqrf (m_viewDistance); - - for (const auto &shieldedEnemy : shieldedEnemies) { - float distance = shieldedEnemy->v.origin.distanceSq (pev->origin); - - if (distance < nearestDistance) { - nearestDistance = distance; - newEnemy = shieldedEnemy; - } - } + + if (game.isNullEntity (newEnemy) && !game.isNullEntity (shieldEnemy)) { + newEnemy = shieldEnemy; } }