From b790e7a4bbbec712439898dd80af55635c24d598 Mon Sep 17 00:00:00 2001 From: jeefo Date: Sat, 13 Apr 2024 15:04:04 +0300 Subject: [PATCH] nav: allow bots to duck on goal and camp nodes if it's a route end --- src/navigate.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/navigate.cpp b/src/navigate.cpp index e31da6c..585fa2c 100644 --- a/src/navigate.cpp +++ b/src/navigate.cpp @@ -819,8 +819,12 @@ void Bot::moveToGoal () { findValidNode (); // press duck button if we need to - if ((m_pathFlags & NodeFlag::Crouch) && !(m_pathFlags & (NodeFlag::Camp | NodeFlag::Goal))) { - pev->button |= IN_DUCK; + if (m_pathFlags & NodeFlag::Crouch) { + constexpr auto kEndRouteThreshold = 3; + + if (!(m_pathFlags & (NodeFlag::Camp | NodeFlag::Goal)) || m_pathWalk.length () < kEndRouteThreshold) { + pev->button |= IN_DUCK; + } } m_lastUsedNodesTime = game.time (); @@ -1114,7 +1118,7 @@ bool Bot::updateNavigation () { } float desiredDistanceSq = cr::sqrf (4.0f); - const float nodeDistanceSq = pev->origin.distanceSq2d (m_pathOrigin); + const float nodeDistanceSq = pev->origin.distanceSq (m_pathOrigin); // initialize the radius for a special node type, where the node is considered to be reached if (m_pathFlags & NodeFlag::Lift) {