Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 17 additions & 5 deletions src/game/server/neo/bot/neo_bot_locomotion.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,21 +40,33 @@ inline float CNEOBotLocomotion::GetMaxJumpHeight( void ) const
{
// NEO JANK: Assumes [MD]'s g_bMovementOptimizations = true, where we assume sv_gravity is 800 for navigation.
// Changing that setting can potentially break bot navigation.
extern ConVar sv_gravity;
Assert( sv_gravity.GetFloat() == 800.0f );

auto me = (CNEO_Player*)GetBot()->GetEntity();
float theoreticalJumpHeight = 0.0f;

switch (me->GetClass())
{
case NEO_CLASS_RECON:
return NEO_RECON_CROUCH_JUMP_HEIGHT;
theoreticalJumpHeight = NEO_RECON_CROUCH_JUMP_HEIGHT;
break;
case NEO_CLASS_JUGGERNAUT:
return NEO_JUGGERNAUT_CROUCH_JUMP_HEIGHT;
theoreticalJumpHeight = NEO_JUGGERNAUT_CROUCH_JUMP_HEIGHT;
break;
case NEO_CLASS_SUPPORT:
return NEO_SUPPORT_CROUCH_JUMP_HEIGHT;
theoreticalJumpHeight = NEO_SUPPORT_CROUCH_JUMP_HEIGHT;
break;
case NEO_CLASS_VIP:
return NEO_ASSAULT_CROUCH_JUMP_HEIGHT; // vip same as assault
theoreticalJumpHeight = NEO_ASSAULT_CROUCH_JUMP_HEIGHT; // vip same as assault
break;
case NEO_CLASS_ASSAULT:
return NEO_ASSAULT_CROUCH_JUMP_HEIGHT;
theoreticalJumpHeight = NEO_ASSAULT_CROUCH_JUMP_HEIGHT;
break;
default:
Assert(false);
return 0.f;
}

return theoreticalJumpHeight - NEO_BOT_JUMP_HEIGHT_BUFFER;
}
26 changes: 13 additions & 13 deletions src/game/shared/neo/neo_player_shared.h
Original file line number Diff line number Diff line change
Expand Up @@ -156,20 +156,20 @@ COMPILE_TIME_ASSERT(NEO_ASSAULT_CROUCH_SPEED == NEO_VIP_CROUCH_SPEED);
// (Base Hull Max = 70) + (NEO_JUGGERNAUT_MAXHULL_OFFSET.z = 18) = 88
// (Base Hull Duck Max = 59) + (NEO_JUGGERNAUT_DUCK_MAXHULL_OFFSET.z = 16) = 75
//
// Then apply a uniform spare height budget gap of 7 units to all classes.
// Formula: (Class Jump Height) + (Lift) - (Spare Gap)
//
// Precalculated bot crouch jump heights for use in bot locomotion/navigation checks:
// Theoretical max bot crouch jump heights:
// Formula: (Class Jump Height) + (Lift)
// ---
// Recon: 54 + 18 - 7 = 65
// Assault/VIP: 36 + 17 - 7 = 46
// Support: 36 + 11 - 7 = 40
// Juggernaut: 50.4 + 13 - 7 = 56.4 (rounded down to 56)

#define NEO_RECON_CROUCH_JUMP_HEIGHT 65.f
#define NEO_ASSAULT_CROUCH_JUMP_HEIGHT 46.f
#define NEO_SUPPORT_CROUCH_JUMP_HEIGHT 40.f
#define NEO_JUGGERNAUT_CROUCH_JUMP_HEIGHT 56.f
// Recon: 54 + 18 = 72
// Assault/VIP: 36 + 17 = 53
// Support: 36 + 11 = 47
// Juggernaut: 50.4 + 13 = 63.4
#define NEO_RECON_CROUCH_JUMP_HEIGHT 72.0f
#define NEO_ASSAULT_CROUCH_JUMP_HEIGHT 53.0f
#define NEO_SUPPORT_CROUCH_JUMP_HEIGHT 47.0f
#define NEO_JUGGERNAUT_CROUCH_JUMP_HEIGHT 63.4f
// To ensure bots can safely clear obstacles, we apply a safety buffer (NEO_BOT_JUMP_HEIGHT_BUFFER)
// when checking traverseability, by subtracting it from these theoretical max heights.
#define NEO_BOT_JUMP_HEIGHT_BUFFER 7.0f

// END OF NEO MOVEMENT DEFINITIONS
//////////////////////////////////////////////////////
Expand Down