Skip to content

Conversation

@gidi30
Copy link

@gidi30 gidi30 commented Nov 2, 2025

Description

Currently if a Soldier Pyro or Medic meet the criteria for the stomping animation they may go into a reference pose if they use certain weapons due to missing entries in the acttables and missing activities in the player models.

For Soldier if your active weapon uses Primary2 or MeleeAllClass animations it will try to use the untranslated ACT_MP_FALLING_STOMP activity which doesnt exist for Soldier.

For Pyro if your active weapon translates the activity to ACT_MP_FALLING_STOMP_PRIMARY or ACT_MP_FALLING_STOMP_MELEE, which most of them do, it will cause the player to go into a reference pose due to Pyro not having those activities.

For Medic it will always cause a reference pose if the game decides to do the stomping activity due to him not having any stomping activities.

This PR tries to fix it by adding the missing entries to the Primary2 and MeleeAllClass acttables and adding a check to see if the model can actually use the activity before applying it.

@FlaminSarge
Copy link
Contributor

FlaminSarge commented Nov 4, 2025

There are a few other cases in ValveSoftware/Source-1-Games#4197 that this should probably handle

{
// In an air walk.
if ( m_pTFPlayer->m_Local.m_flFallVelocity > PLAYER_MAX_SAFE_FALL_SPEED && m_pTFPlayer->m_Shared.CanFallStomp() )
if ( m_pTFPlayer->m_Local.m_flFallVelocity > PLAYER_MAX_SAFE_FALL_SPEED && m_pTFPlayer->m_Shared.CanFallStomp() && !( SelectWeightedSequence( TranslateActivity( ACT_MP_FALLING_STOMP ) ) < 0 ) )
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, why did you write the condition in such a convulted way? Just check the result is greater than or equals to 0.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The condition was mostly copied from HandleDucking where it checks for SelectWeightedSequence( TranslateActivity( ACT_MP_CROUCHWALK ) ) < 0 to early out of the function.
However you are correct I could have done SelectWeightedSequence( TranslateActivity( ACT_MP_FALLING_STOMP ) ) >= 0

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.

3 participants