Skip to content

Fix Scout Atomizer triple jump failing on weird edges - #2079

Open
cwyptt wants to merge 1 commit into
ValveSoftware:masterfrom
cwyptt:fix/scout-atomizer-edge-jump
Open

cwyptt wants to merge 1 commit into
ValveSoftware:masterfrom
cwyptt:fix/scout-atomizer-edge-jump

Conversation

@cwyptt

@cwyptt cwyptt commented Sep 13, 2026

Copy link
Copy Markdown

Bug

On sharp edges, fences, and narrow ledges, CategorizePosition() can fail to detect valid ground (surface normal z < 0.7, quadrant traces also fail), causing SetGroundEntity(NULL) despite the player standing on geometry. CheckJumpButton() then miscounts the first jump as an air dash, consuming a charge that should have been free. With the Atomizer (air_dash_count=2), this leaves only 1 remaining air dash.

Confirmed by the TF2 wiki: "Rarely, the triple jump fails to deploy on a fence and other objects."

Fix

Add coyote time to CheckJumpButton():

  • Track m_flLastOnGroundTime via SetGroundEntity() when valid ground is found
  • When "airborne" but was on ground within tf_scout_coyote_time (default 0.15s), AirDash == 0, and a surface is confirmed 4 units below via trace and treat as a ground jump instead of consuming an air dash
  • Clear m_flLastOnGroundTime on ground jump to prevent exploit

The near-ground trace ensures this only triggers on the edge bug (surface present but undetected), not when walking off ledges or being knocked into the air.

CategorizePosition() can fail to detect ground on sharp/narrow edges
(steep surface normals), causing SetGroundEntity(NULL) despite the
player standing on geometry. When this happens, CheckJumpButton()
miscounts the first jump as an air dash, consuming a charge that
should be free. With the Atomizer (air_dash_count=2), this leaves
only 1 remaining air dash, producing 2 jumps instead of 3.

Add coyote time: track m_flLastOnGroundTime via SetGroundEntity, and
in CheckJumpButton() allow a ground jump (instead of air dash) when
within a small time window after leaving ground, a surface is
confirmed just below the player, and no air dashes have been used
yet. Clear the timestamp on ground jump to prevent exploit.

ConVar tf_scout_coyote_time (default 0.15s) controls the window.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant