From 5a5cc54d1c0b63e9ead3bc7c93ed75a31d35ae39 Mon Sep 17 00:00:00 2001 From: Alan Shen Date: Sun, 5 Apr 2026 14:10:01 -0600 Subject: [PATCH] Bots crouch when following pings if commander was crouched --- .../server/neo/bot/behavior/neo_bot_command_follow.cpp | 9 +++++++++ .../server/neo/bot/behavior/neo_bot_command_follow.h | 1 + 2 files changed, 10 insertions(+) diff --git a/src/game/server/neo/bot/behavior/neo_bot_command_follow.cpp b/src/game/server/neo/bot/behavior/neo_bot_command_follow.cpp index 16a8c8ac89..a513a7916b 100644 --- a/src/game/server/neo/bot/behavior/neo_bot_command_follow.cpp +++ b/src/game/server/neo/bot/behavior/neo_bot_command_follow.cpp @@ -233,6 +233,7 @@ bool CNEOBotCommandFollow::FollowCommandChain(CNEOBot* me) // Use sv_neo_bot_cmdr_stop_distance_sq for consistent bot collection range // follow_stop_distance_sq would be confusing if player doesn't know about distance tuning me->m_hLeadingPlayer = pCommander; + m_bCrouchWhenFollowingPing = false; // watch commander's stance m_vGoalPos = CNEO_Player::VECTOR_INVALID_WAYPOINT; pCommander->m_vLastPingByStar.GetForModify(me->GetStar()) = CNEO_Player::VECTOR_INVALID_WAYPOINT; } @@ -244,6 +245,7 @@ bool CNEOBotCommandFollow::FollowCommandChain(CNEOBot* me) { SendUpdateToCommander( me, "On my way." ); me->m_hLeadingPlayer = nullptr; // Stop following and start travelling to ping + m_bCrouchWhenFollowingPing = pCommander->IsDucking(); m_vGoalPos = pCommander->m_vLastPingByStar.Get(me->GetStar()); me->m_vLastPingByStar.GetForModify(me->GetStar()) = pCommander->m_vLastPingByStar.Get(me->GetStar()); @@ -256,10 +258,16 @@ bool CNEOBotCommandFollow::FollowCommandChain(CNEOBot* me) else { me->m_hLeadingPlayer = pCommander; // fallback to following commander + m_bCrouchWhenFollowingPing = false; // watch commander's stance // continue with leader following logic below } } + if (m_bCrouchWhenFollowingPing) + { + me->PressCrouchButton(0.3f); + } + if (FanOutAndCover(me, m_vGoalPos)) { // FanOutAndCover true: arrived at destination and settled, so don't recompute path @@ -274,6 +282,7 @@ bool CNEOBotCommandFollow::FollowCommandChain(CNEOBot* me) else { me->m_hLeadingPlayer = pCommander; // fallback to following commander + m_bCrouchWhenFollowingPing = false; // watch commander's stance // continue with leader following logic below } } diff --git a/src/game/server/neo/bot/behavior/neo_bot_command_follow.h b/src/game/server/neo/bot/behavior/neo_bot_command_follow.h index e4b90a6687..d4ebd6df4d 100644 --- a/src/game/server/neo/bot/behavior/neo_bot_command_follow.h +++ b/src/game/server/neo/bot/behavior/neo_bot_command_follow.h @@ -30,6 +30,7 @@ class CNEOBotCommandFollow : public Action< CNEOBot > CNEOBotGhostEquipmentHandler m_ghostEquipmentHandler; IntervalTimer m_commanderLookingAtMeTimer; + bool m_bCrouchWhenFollowingPing = false; bool m_bWasCommanderLookingAtMe = false; EHANDLE m_hTargetEntity;