diff --git a/Entities/AtomGroup.cpp b/Entities/AtomGroup.cpp index 104e535a7..69990ae17 100644 --- a/Entities/AtomGroup.cpp +++ b/Entities/AtomGroup.cpp @@ -1267,9 +1267,13 @@ namespace RTE { owner->GetController()->IsState(MOVE_RIGHT) && pushImpulse.m_X < 0.0F; if (againstTravelDirection) { // Filter some of our impulse out. We're pushing against an obstacle, but we don't want to kick backwards! - // Translate it into to upwards motion to step over what we're walking into instead ;) const float againstIntendedDirectionMultiplier = 0.5F; - pushImpulse.m_Y -= std::abs(pushImpulse.m_X * (1.0F - againstIntendedDirectionMultiplier)); + + if (!owner->GetController()->IsState(BODY_CROUCH) && !owner->GetController()->IsState(MOVE_DOWN)) { + // Translate it into to upwards motion to step over what we're walking into instead ;) + pushImpulse.m_Y -= std::abs(pushImpulse.m_X * (1.0F - againstIntendedDirectionMultiplier)); + } + pushImpulse.m_X *= againstIntendedDirectionMultiplier; } }