fix: removed unnecessary codes in ladder handling

fix: collision case the bot can jump if it's not on the ladder, so it won't press the jump button when going up the ladder
This commit is contained in:
commandcobra7 2023-05-15 11:44:02 +03:00 committed by GitHub
commit 9ae7c38b80
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 5 additions and 13 deletions

View file

@ -1608,7 +1608,7 @@ void Bot::refreshEnemyPredict () {
if (game.isNullEntity (m_enemy) && !game.isNullEntity (m_lastEnemy) && !m_lastEnemyOrigin.empty ()) { if (game.isNullEntity (m_enemy) && !game.isNullEntity (m_lastEnemy) && !m_lastEnemyOrigin.empty ()) {
const auto distanceToLastEnemySq = m_lastEnemyOrigin.distanceSq (pev->origin); const auto distanceToLastEnemySq = m_lastEnemyOrigin.distanceSq (pev->origin);
if (distanceToLastEnemySq > cr::sqrf (384.0f) && (distanceToLastEnemySq < cr::sqrf (1600.0f) || usesSniper ())) { if (distanceToLastEnemySq > cr::sqrf (384.0f) && (distanceToLastEnemySq < cr::sqrf (2048.0f) || usesSniper ())) {
m_aimFlags |= AimFlags::PredictPath; m_aimFlags |= AimFlags::PredictPath;
} }
const bool denyLastEnemy = pev->velocity.lengthSq2d () > 0.0f && distanceToLastEnemySq < cr::sqrf (256.0f); const bool denyLastEnemy = pev->velocity.lengthSq2d () > 0.0f && distanceToLastEnemySq < cr::sqrf (256.0f);
@ -2653,7 +2653,7 @@ void Bot::frame () {
} }
// clear enemy far away // clear enemy far away
if (!m_lastEnemyOrigin.empty () && !game.isNullEntity (m_lastEnemy) && pev->origin.distanceSq (m_lastEnemyOrigin) >= cr::sqrf (2048.0)) { if (!m_lastEnemyOrigin.empty () && !game.isNullEntity (m_lastEnemy) && pev->origin.distanceSq (m_lastEnemyOrigin) >= cr::sqrf (2048.0f)) {
m_lastEnemy = nullptr; m_lastEnemy = nullptr;
m_lastEnemyOrigin = nullptr; m_lastEnemyOrigin = nullptr;
} }

View file

@ -694,7 +694,7 @@ void Bot::checkTerrain (float movedDistance, const Vector &dirNormal) {
if (m_collStateIndex < kMaxCollideMoves) { if (m_collStateIndex < kMaxCollideMoves) {
switch (m_collideMoves[m_collStateIndex]) { switch (m_collideMoves[m_collStateIndex]) {
case CollisionState::Jump: case CollisionState::Jump:
if (isOnFloor () || isInWater ()) { if ((isOnFloor () || isInWater ()) && !isOnLadder ()) {
pev->button |= IN_JUMP; pev->button |= IN_JUMP;
} }
break; break;
@ -888,15 +888,7 @@ bool Bot::updateNavigation () {
} }
} }
if (m_pathFlags & NodeFlag::Ladder) { if ((m_pathFlags & NodeFlag::Ladder) || isOnLadder ()) {
if (!m_pathWalk.empty ()) {
if (m_pathWalk.hasNext ()) {
if (graph[m_pathWalk.next ()].flags & NodeFlag::Ladder || isOnLadder ()) {
m_path->radius = 17.0f;
}
}
}
if (graph.exists (m_previousNodes[0]) && (graph[m_previousNodes[0]].flags & NodeFlag::Ladder)) { if (graph.exists (m_previousNodes[0]) && (graph[m_previousNodes[0]].flags & NodeFlag::Ladder)) {
if (cr::abs (m_pathOrigin.z - pev->origin.z) > 5.0f) { if (cr::abs (m_pathOrigin.z - pev->origin.z) > 5.0f) {
m_pathOrigin.z += pev->origin.z - m_pathOrigin.z; m_pathOrigin.z += pev->origin.z - m_pathOrigin.z;

View file

@ -199,7 +199,7 @@ void Bot::updateAimDir () {
auto dangerIndex = practice.getIndex (m_team, m_currentNodeIndex, m_currentNodeIndex); auto dangerIndex = practice.getIndex (m_team, m_currentNodeIndex, m_currentNodeIndex);
if (graph.exists (dangerIndex) && vistab.visible (m_currentNodeIndex, dangerIndex) && !(graph[dangerIndex].flags & NodeFlag::Crouch)) { if (graph.exists (dangerIndex) && vistab.visible (m_currentNodeIndex, dangerIndex) && !(graph[dangerIndex].flags & NodeFlag::Crouch)) {
if (pev->origin.distanceSq (graph[dangerIndex].origin) < cr::sqrf (160.0f)) { if (pev->origin.distanceSq (graph[dangerIndex].origin) < cr::sqrf (512.0f)) {
m_lookAt = m_destOrigin; m_lookAt = m_destOrigin;
} }
else { else {