NavBot fixes

This commit is contained in:
LightCat 2018-10-07 14:21:55 +02:00
parent feb12191b3
commit 4a9dce2e36

View File

@ -165,7 +165,7 @@ CachedEntity *NearestEnemy()
ent->m_iTeam() == LOCAL_E->m_iTeam()) ent->m_iTeam() == LOCAL_E->m_iTeam())
continue; continue;
float scr = ent->m_flDistance(); float scr = ent->m_flDistance();
if (g_pPlayerResource->GetClass(ent) == tf_engineer) if (g_pPlayerResource->GetClass(ent) == tf_engineer || g_pPlayerResource->GetClass(ent) == tf_heavy)
scr *= 5.0f; scr *= 5.0f;
if (g_pPlayerResource->GetClass(ent) == tf_pyro) if (g_pPlayerResource->GetClass(ent) == tf_pyro)
scr *= 7.0f; scr *= 7.0f;
@ -180,7 +180,6 @@ CachedEntity *NearestEnemy()
else else
last_tar = bestent->m_IDX; last_tar = bestent->m_IDX;
return bestent; return bestent;
return nullptr;
} }
Timer ammo_health_cooldown{}; Timer ammo_health_cooldown{};
Timer init_timer{}; Timer init_timer{};
@ -356,30 +355,30 @@ bool NavToEnemy()
{ {
if (*stay_near) if (*stay_near)
{ {
static Vector lastgoal{};
CachedEntity *ent = NearestEnemy(); CachedEntity *ent = NearestEnemy();
if (CE_GOOD(ent)) if (CE_GOOD(ent))
{ {
int nearestvalid{}; int nearestvalid{};
if (!*heavy_mode) if (!*heavy_mode)
{ nearestvalid = nav::FindNearestValidbyDist(ent->m_vecOrigin(), 2000, 6000);
int range = 0;
while (nearestvalid == -1 && range < 5000)
{
nearestvalid = nav::FindNearestValidbyDist(
ent->m_vecOrigin(), 2000 - range / 4, 6000 - range);
range += 300.0f;
}
}
else else
nearestvalid = nearestvalid = nav::FindNearestValidbyDist(ent->m_vecOrigin(), 200, 1000);
nav::FindNearestValidbyDist(ent->m_vecOrigin(), 200, 1000);
if (nearestvalid != -1) if (nearestvalid != -1)
{ {
auto area = nav::areas[nearestvalid]; auto area = nav::areas[nearestvalid];
nav::NavTo(area.m_center, false, true, 1337); nav::NavTo(area.m_center, false, true, 1337);
lastgoal = area.m_center;
return true; return true;
} }
} }
else if (lastgoal.z && LOCAL_E->m_vecOrigin().DistTo(lastgoal) > 200.0f)
{
nav::NavTo(lastgoal, false, true, 1337);
return true;
}
else
lastgoal = {};
} }
return false; return false;
} }