aim: forget last enemy in last enemy aim state too

This commit is contained in:
jeefo 2023-04-02 14:30:17 +03:00
commit f266c24089
No known key found for this signature in database
GPG key ID: 927BCA0779BEA8ED

View file

@ -1725,7 +1725,6 @@ void Bot::updateEmotions () {
}
void Bot::overrideConditions () {
if (!usesKnife () && m_difficulty > Difficulty::Normal && ((m_aimFlags & AimFlags::Enemy) || (m_states & Sense::SeeingEnemy)) && !cv_jasonmode.bool_ () && getCurrentTaskId () != Task::Camp && getCurrentTaskId () != Task::SeekCover && !isOnLadder ()) {
m_moveToGoal = false; // don't move to goal
m_navTimeset = game.time ();
@ -2806,13 +2805,22 @@ void Bot::updateAimDir () {
m_lookAt = m_lastEnemyOrigin;
// did bot just see enemy and is quite aggressive?
if (m_seeEnemyTime + 1.0f - m_actualReactionTime + m_baseAgressionLevel > game.time ()) {
if (m_seeEnemyTime + 2.0f - m_actualReactionTime + m_baseAgressionLevel > game.time ()) {
// feel free to fire if shootable
if (!usesSniper () && lastEnemyShootable ()) {
m_wantsToFire = true;
}
}
else {
auto distanceToLastEnemySq = m_lastEnemyOrigin.distanceSq (pev->origin);
auto maxDistanceToEnemySq = cr::square (1600.0f);
if (distanceToLastEnemySq >= maxDistanceToEnemySq) {
m_lastEnemyOrigin = nullptr;
m_aimFlags &= ~AimFlags::LastEnemy;
}
}
}
else if (flags & AimFlags::PredictPath) {
TraceResult tr {};
@ -2854,15 +2862,20 @@ void Bot::updateAimDir () {
}
else {
m_aimFlags &= ~AimFlags::PredictPath; // forget enemy far away
if (distanceToLastEnemySq >= maxDistanceToEnemySq) {
m_lastEnemyOrigin = nullptr;
}
}
}
else {
m_aimFlags &= ~AimFlags::PredictPath; // forget enemy far away
if (distanceToLastEnemySq >= maxDistanceToEnemySq)
if (distanceToLastEnemySq >= maxDistanceToEnemySq) {
m_lastEnemyOrigin = nullptr;
}
}
}
else if (flags & AimFlags::Camp) {
m_lookAt = m_camp;
}