Wardogs — Player Movement Numbers

Built from the 137 files under Content/GameMechanics/Player and the movement settings under Content/MoverTesting/Settings, plus the native class defaults of BHGroundMovementData. Tables are generated by _tools/movement_tables.py (--write is idempotent; --check-native compares the default table with the constructor in the exe).

Labels. Data = read from an exported asset. Native = read from the game binary (RVAs against image base 0x140000000). Derived = arithmetic on Data and Native values, not seen in game. Not traced = left open on purpose. No value here was checked in-game.

Where this page sits. MoverTesting already documents the exported movement settings, state modifiers and curves, so this page does not repeat them. It adds what that page leaves out: the values the export omits because they equal the class default (most importantly the base MaxSpeed), the resulting speed per stance, the curves and audio configuration stored in the Player folder, and an index of all 137 files. It is a separate page because the numbers come from a different data folder and from the constructor, and because these tables are generated while MoverTesting is hand-written.

137 files under GameMechanics/Player: Audio 1, Curves 9, root file 1, Inputs 123, MovementFeatures 3.


1. Ground speed

1a. Where the base speed comes from

Native. DA_GroundMovement and DA_BodyDragging_GroundMovement are BHGroundMovementData assets. The export drops every property equal to the class default, and neither asset lists MaxSpeed, Acceleration, MaxStopSpeed, SprintMaxSpeedScale or TacSprintMaxSpeedScale. The UBHGroundMovementData constructor (vtable store at RVA 0x528352D, default stores 0x5283574 to 0x52837EF) writes them: MaxSpeed 536, Acceleration 7, MaxStopSpeed 100, SprintMaxSpeedScale 1.42, TacSprintMaxSpeedScale 1.55. Speeds are in Unreal units per second (cm/s).

Native. GetMaxSpeed(Stance) is exec thunk 0x52AA1F0, which calls 0x52919B0. That reads MaxSpeed at +0x4C and, when the mover has a stance entry for the current stance, hands it to the stance’s MaxSpeedModifier through a lambda (0x52820C0 runs it). The lambda body is not decoded. Derived: the stance Multiply modifiers below are applied to the 536 base.

| Group | Property | Class default (Native) | DA_GroundMovement (Data) | DA_BodyDragging_GroundMovement (Data) | Value in use | |—|—|—|—|—|—| | Movement | MaxSpeed | 536 | omitted | omitted | 536 | | | MinSpeed | 120 | 80 | 80 | 80 | | | MaxStopSpeed | 100 | omitted | omitted | 100 | | | Acceleration | 7 | omitted | omitted | 7 | | | Friction | 8 | 6 | 6 | 6 | | | MaxStepHeight | 40 | omitted | omitted | 40 | | | BlockedMovePct | 0.5 | omitted | omitted | 0.5 | | Direction scales | BackMaxSpeedScale | 1 | 0.7 | 0.7 | 0.7 | | | BackAccelerationScale | 1 | omitted | omitted | 1 | | | StrafeMaxSpeedScale | 1 | 0.7 | 0.7 | 0.7 | | | StrafeAccelerationScale | 1 | omitted | omitted | 1 | | | ForwardStrafeScale | 0.85 | 0.6 | 0.6 | 0.6 | | | BackwardStrafeScale | 0.85 | omitted | 0.35 | 0.85 / 0.35 | | | InertiaMax | 50 | omitted | omitted | 50 | | Sprint | SprintMaxSpeedScale | 1.42 | omitted | omitted | 1.42 | | | SprintAccelerationScale | 1 | omitted | omitted | 1 | | | TacSprintMaxSpeedScale | 1.55 | omitted | omitted | 1.55 | | | TacSprintAccelerationScale | 1 | omitted | omitted | 1 | | | ForwardStrafeScaleSprinting | 0.667 | 0.3503 | 0.3503 | 0.3503 | | | ForwardStrafeScaleTacSprinting | 0.4 | 0.3503 | 0.3503 | 0.3503 | | | BlockSprintTime | 1 | 0.8 | omitted | 0.8 / 1 | | | BlockTacSprintTime | 1 | 0.6 | omitted | 0.6 / 1 | | | TacSprintStaminaUsagePerSecond | 20 | omitted | omitted | 20 | | | MinStartTacSprintPercentage | 0.3 | 0.2 | 0.2 | 0.2 | | Jump | JumpVelocity | 500 | 320 | 320 | 320 | | | MaxJumpStamina | 100 | 150 | 150 | 150 | | | JumpStaminaCost | 20 | 50 | 50 | 50 | | | JumpStaminaRegenPerSecond | 5 | 50 | 50 | 50 | | | JumpCooldown | 0.5 | 0.05 | 0.05 | 0.05 | | | PostVaultFrictionScale | 1.2 | omitted | omitted | 1.2 | | | PostVaultFrictionTime | 1 | 0.6 | 0.6 | 0.6 | | Lean | LeanLeftAngle | 30 | omitted | omitted | 30 | | | LeanRightAngle | 35 | omitted | omitted | 35 | | | PivotOffset | 60 | omitted | omitted | 60 | | | LeanTime | 0.5 | 0.55 | 0.55 | 0.55 | | | UnleanTime | 0.5 | 0.35 | 0.35 | 0.35 | | | SwapLeanTime | 0.2 | omitted | omitted | 0.2 | | | UnleanInterpolationSpeedCollided | 10 | 15 | 15 | 15 | | | LeanTraceRadius | 5 | 10 | 10 | 10 | | Stance stamina | StanceCooldown | 0.5 | 0.15 | 0.15 | 0.15 | | | MaxStanceStamina | 100 | omitted | omitted | 100 | | | StanceStaminaRegenPerSecond | 30 | 50 | 50 | 50 | | | StanceStaminaRegenDelay | 1 | 0 | 0 | 0 | | | ProneSweepDistance | 130 | 125 | 125 | 125 |

44 defaults decoded from the constructor; 20 of the listed rows are omitted from DA_GroundMovement, so the class default applies. The last column shows ground movement first, body dragging second when they differ.

1b. Speed per stance

| Stance | Capsule half-height / radius | Eye height | Stance stamina cost | Acceleration | MaxSpeed modifier | Walk speed (derived) | Sprint (derived) | Tac sprint (derived) | Max walkable slope | |—|—|—|—|—|—|—|—|—|—| | Stand | 96 / 34 | 168 | 20 | Set 7 | Multiply 0.8 | 428.8 | 608.9 | 664.6 | not set | | Crouch | 68 / 34 | 118 | 30 | Set 12 | Multiply 0.5 | 268 | - | - | not set | | Prone | 34 / 34 | 36 | 50 | Set 19 | Multiply 0.15 | 80.4 | - | - | 40 deg |

Walk speed = MaxSpeed 536 (class default) x the stance multiplier. Sprint and tac sprint multiply that by SprintMaxSpeedScale 1.42 and TacSprintMaxSpeedScale 1.55 (class defaults). Sprint columns are given for Stand only; whether Crouch or Prone can sprint is not traced. DA_BodyDragging_GroundMovement has the same stance table except Crouch, which sets a 45 degree walkable slope.

Reading. Prone walks at 80.4, which sits next to the exported MinSpeed of 80. Derived: that match supports reading the 0.15 as a multiplier on the 536 base. Direction scales then reduce speed again: back and strafe 0.7 of the stance speed (Data). Not traced: how sprint, slow walk, ADS and the gameplay-effect multipliers combine with the stance speed. The effect side is in Gameplay Effect Values: Movement.MaxSpeedMultiplier is scaled by weight class (0.95 Light, 0.875 Medium, 0.8 Heavy and SuperHeavy), ADS (0.5 compound), barbed wire (0.075) and others; Movement.SprintSpeedMultiplier by the fists effect.

1c. Other modes

| Mode | Number | Value | Source | |—|—|—|—| | Ground, standing | MaxSpeed (cm/s) | 536 | Native default; stance multiplier in the stance table | | Ground | Slow walk scale (Slow / Moderate / Fast) | 0.2 / 0.4 / 0.6 | Data: SlowWalkSpeedSettings; what it multiplies is not traced | | Ground | Jump velocity (cm/s) | 320 | Data | | Falling | Acceleration / MaxSpeed / MaxStopSpeed | 5 / 300 / 150 | Data: DA_FallingMovement | | Falling | AirFriction / AirControlPercentage | 1 / 0.2 | Data | | Falling | Terminal speed, vertical / horizontal | 5,300 / 5,300 | Data | | Ladder | ClimbDownAcceleration | 500 | Data: DA_LadderClimbingMovement | | Ladder | ClimbDownMaxSpeed | 160 | Data: DA_LadderClimbingMovement | | Ladder | ClimbDownMinSpeed | 40 | Data: DA_LadderClimbingMovement | | Ladder | ClimbUpAcceleration | 100,000 | Data: DA_LadderClimbingMovement | | Ladder | ClimbUpMaxSpeed | 160 | Data: DA_LadderClimbingMovement | | Ladder | ClimbUpMinSpeed | 40 | Data: DA_LadderClimbingMovement | | Ladder | SlideDownAcceleration | 1,000 | Data: DA_LadderClimbingMovement | | Ladder | SlideDownSpeed | 320 | Data: DA_LadderClimbingMovement | | Swimming | WaterAcceleration / InputDeceleration | 4,000 / 500 | Data: DA_SwimmingMovement; no swim speed cap is exported |

Swimming has an acceleration but no exported speed cap; the class default applies (swim 250 cm/s, fast swim x2, see section 7b). Vaulting, mantling, climbing and ladder transitions are in MoverTesting §3d and §3e.


2. Stamina, jump, lean, stance change

These come from the ground table in §1a; the notes explain what the rows are.

  • Jump stamina (Data). A jump costs 50 of a 150 pool that refills at 50 per second, with a 0.05 s cooldown between jumps. The class defaults were 100, 20, 5 and 0.5 s, so the asset made jumping far cheaper than the default. Jump velocity is 320 cm/s against a default of 500. Jump height is also scaled by CRV_JumpHeightScalar (in MoverTesting).
  • Stance stamina (Data and Native). Each stance change costs the stance’s value (Stand 20, Crouch 30, Prone 50) from a pool of 100 (class default, not exported) that refills at 50 per second with no delay (the class default was 30 per second and a 1 s delay). StanceCooldown 0.15 s. Transition times: Stand to Crouch 0.3 s, Crouch to Prone 0.4 s, Prone to Crouch 0.5 s, Crouch to Stand 0.3 s (Data).
  • Tactical sprint stamina (Native). It drains 20 per second (class default, not exported). MinStartTacSprintPercentage is 0.2 (Data; what it is a fraction of is not stated). BlockSprintTime 0.8 s and BlockTacSprintTime 0.6 s delay re-entering a sprint.
  • Lean (Native and Data). Maximum angles are 30 degrees left and 35 degrees right (class defaults, not exported). Lean takes 0.55 s and un-lean 0.35 s (Data). The lean trace radius is 10 and the collided un-lean speed 15. The curves that shape the transition are CRV_Lean_* in MoverTesting. The gameplay-effect side scales lean time (for example Heavy and SuperHeavy weight ×1.5).
  • Slope (Data). Walking on a slope scales speed by CRV_SlopeGroundSpeedContribution (below): 1.0 up to level, rising to 1.1 at a slope input of 119.8. The input unit is not exported. The Prone stance sets MaxWalkableSlopeAngleModifier 40 (degrees presumed).
  • Not found: a stamina field for plain sprint. BHGroundMovementData has TacSprintStaminaUsagePerSecond only (SDK BHMover_classes.hpp).

3. Fall, landing and vehicle-exit damage

| Curve | Type | Keys (time → value) | Reading | |—|—|—|—| | CRV_DamageIndicator_IntensityResponse | CurveFloat | 0 → 0; 0.2 → 0; 1 → 5 | Damage-indicator intensity (UI response); time 0 to 1 | | CRV_ExitVehiclePunishment_Damage | CurveFloat | 40 → 0; 50 → 40; 60 → 85; 75 → 100 | Damage on leaving a vehicle; input unit not exported (the 40 to 75 range suggests a speed in m/s, not traced) | | CRV_LandGunBob | CurveVector | Z: 0 → 0; 0.124 → -4.817; 0.586 → 0.002 | Vector curve; only the Z channel has keys: weapon dip after landing | | CRV_LandingPunishment_Damage | CurveFloat | 670 → 0; 875 → 100; 1,080 → 200 | Fall damage by impact speed (input unit not exported, cm/s presumed); DA_FallingMovement.DamageLookup | | CRV_LookAcceleration | CurveFloat | 0 → 0; 0.6 → 1 | Look-input acceleration ramp (default) | | CRV_LookAcceleration_Aggressive | CurveFloat | 0 → 0; 0.1 → 0.625; 0.35 → 1 | Look-input acceleration ramp, faster | | CRV_LookAcceleration_Linear | CurveFloat | 0 → 0; 1 → 1 | Look-input acceleration ramp, linear | | CRV_ParachutePunishment_Damage | CurveFloat | 695 → 0; 1,700 → 100 | Landing damage under parachute by impact speed (unit as above); referenced by the parachute settings | | CRV_SlopeGroundSpeedContribution | CurveFloat | -4.9 → 1; 0 → 1; 119.8 → 1.1 | Ground speed scale by slope; used by DA_GroundMovement.SlopeMovementContributionCurve |

Interpolation: damage and slope curves are linear between keys; look-acceleration and gun-bob curves use cubic tangents (the file InterpMode per key). Landing damage: 0 at impact speed 670, 100 at 875, 200 at 1080; the parachute curve reaches 100 at 1700.

Reading (Data and Derived). Landing damage is 0 at an input of 670, 100 at 875 and 200 at 1,080, linear between keys and clamped outside them (extrapolation mode not checked). With the falling speed cap at 5,300 the curve runs well past its last key. If the input is vertical speed in cm/s, 670 is about 2.3 m of free fall; the unit is not exported. The parachute curve starts at 695 and reaches 100 at 1,700. The vehicle-exit curve starts at 40 and reaches 100 at 75. LandingDamageType is WDFallDamageType (MoverTesting §3c).

Gun bob after a landing. CRV_LandGunBob has keys on the Z channel only: 0 at 0 s, a dip of -4.82 at 0.124 s and a return to about 0 at 0.586 s. The consumer and the unit of Z are not traced. The look-acceleration curves ramp look sensitivity with time held: default reaches full at 0.6 s, aggressive reaches 0.625 at 0.1 s and full at 0.35 s, linear reaches full at 1 s. Which curve is used where is not traced.


4. Ladder animation curves

Three vector curves shape the ladder entry and exit moves. Channels are X, Y, Z of the move; the value range is the blend 0 to 1 except the Z channel of the from-top entry, which overshoots to 1.25. They carry no speed; the ladder speeds are in §1c.

| Curve | Channel | Keys | Time range | Value range | |—|—|—|—|—| | CRV_LMF_Ladder_ClimbOffAtTopAnimation | X | 2 | 0 to 1 | 0 to 1 | | CRV_LMF_Ladder_ClimbOffAtTopAnimation | Y | 3 | 0.2 to 1 | 0 to 1 | | CRV_LMF_Ladder_ClimbOffAtTopAnimation | Z | 3 | 0 to 1 | 0 to 1 | | CRV_LMF_Ladder_ClimbOntoAnimation | X | 2 | 0 to 1 | 0 to 1 | | CRV_LMF_Ladder_ClimbOntoAnimation | Y | 2 | 0 to 1 | 0 to 1 | | CRV_LMF_Ladder_ClimbOntoAnimation | Z | 2 | 0 to 1 | 0 to 1 | | CRV_LMF_Ladder_ClimbOntoFromTopAnimation | X | 2 | 0 to 1 | 0 to 1 | | CRV_LMF_Ladder_ClimbOntoFromTopAnimation | Y | 2 | 0 to 1 | 0 to 1 | | CRV_LMF_Ladder_ClimbOntoFromTopAnimation | Z | 4 | 0 to 1 | 0 to 1.25 |


5. Footstep and movement audio

DA_DefaultPlayerMovementAudioConfiguration is audio configuration; only the gameplay-relevant part is listed. A step cue fires each time the character has travelled TriggerDistance, so a smaller distance means more frequent (and so more audible) steps.

Footstep trigger distance (cm of travel per step cue; TriggerDistance)

Stance or mode State Distance Cue
Standing default 150 GameplayCue.Player.Movement.Walking.Step
Standing Sprint 200 GameplayCue.Player.Movement.Sprint.Step
Standing Tactical 190 GameplayCue.Player.Movement.Sprint.Tactical.Step
Standing Aiming 95 GameplayCue.Player.Movement.Walking.Step
Standing Swimming 160 GameplayCue.Player.Movement.Swimming.Splash
Standing Sliding 0 None
Standing Skydiving 0 None
Standing Parachuting 0 None
Crouched default 110 GameplayCue.Player.Movement.Crouch.Footstep
Crouched Aiming 65 GameplayCue.Player.Movement.Crouch.Footstep
Prone default 50 GameplayCue.Player.Movement.Prone
GroundMovement (mode) default 162 GameplayCue.Player.Movement.Walking.Step
Swimming (mode) default 385 GameplayCue.Player.Movement.Swimming.Splash
BodyDragging (mode) default 162 GameplayCue.Player.Movement.Walking.Step

Jump cue GameplayCue.Player.Movement.Jump. Landing cues: Mover.Mode.Falling → GameplayCue.Player.Movement.Land; Mover.Mode.Parachuting → GameplayCue.Player.Movement.Parachute.Land. Movement modes with an effect entry: 9; mode variants are not expanded here. Stance transition cues: StandToCrouch, StandToProne, CrouchToStand, CrouchToProne, ProneToStand, ProneToCrouch.

Derived: with the 536 base, a standing walk of 428.8 cm/s and 150 cm per step gives about 2.9 steps per second; a prone crawl of 80.4 cm/s at 50 cm per step gives about 1.6. Sprint is 200 cm per step.


6. Character components

DA_PlayerCharacterComponents (BHPerspectiveData) lists six component templates the player pawn builds from. Only a few properties are exported; the rest equal their defaults.

| Template key | Component | Anim class | Mesh | Relative location (X, Y, Z) | Other | |—|—|—|—|—|—| | FirstPersonBodyMesh | SkeletalMeshComponent | ABP_TP_Character_Rework_C | SK_FP_Body_Reference_Character | 0, 0, -96 | Background | | PlayerTransportMeshFP | SkeletalMeshComponent | - | - | -8.46, 0, -95.5 | - | | PlayerTransportMeshTP | SkeletalMeshComponent | - | - | 15.63, 0, -96 | - | | FirstPersonCamera | WDFirstPersonCameraComponent | - | - | 0, 0, 68.11 | FOV 106 | | FirstPersonMeshComponent | SkeletalMeshComponent | ABP_FPCharacter_Rework_C | SK_Temp_Glove_arms | 0, 0, -171.5 | Foreground | | WaveBreakerComponent | WDWaveBreakerComponent | - | - | - | - |

The first-person camera has a 106 degree field of view and a relative Z of 68.11 (parent not stated). The stand eye height in the stance table is 168. The wave-breaker component has no exported properties.


7. Input assets in this folder

The binding side (default keys per action) is generated on Settings and Inputs. The gamepad response curves in this folder map stick deflection to output:

| Curve | Keys (input → output) | |—|—| | CRV_GamepadResponseCurve_Classic | 0 → 0; 0.7 → 0.25; 1 → 1 | | CRV_GamepadResponseCurve_Dynamic | 0 → 0; 0.1 → 0.015; 0.2 → 0.04; 0.3 → 0.08; 0.4 → 0.14; 0.5 → 0.21; 0.6 → 0.29; 0.7 → 0.39; 0.8 → 0.52; 0.9 → 0.7; 1 → 1 | | CRV_GamepadResponseCurve_Linear | 0 → 0; 1 → 1 | | CRV_GamepadResponseCurve_Standard | 0 → 0; 0.4 → 0.15; 0.7 → 0.45; 1 → 1 |

7a. Index of all files

Every file in the folder, grouped by sub-folder. Input action rows give the tag, value type (a missing value type means boolean) and trigger classes; mapping-context rows count default mappings.

(root) (1 files)

File Type Content
DA_PlayerCharacterComponents BHPerspectiveData 6 component templates

Audio (1 files)

File Type Content
DA_DefaultPlayerMovementAudioConfiguration WDCharacterMovementEffectsComponentConfigurationDataAsset footstep, jump, landing and stance cues (see audio section)

Curves (9 files)

File Type Content
CRV_DamageIndicator_IntensityResponse CurveFloat keys 3
CRV_ExitVehiclePunishment_Damage CurveFloat keys 4
CRV_LandGunBob CurveVector keys 3
CRV_LandingPunishment_Damage CurveFloat keys 3
CRV_LookAcceleration CurveFloat keys 2
CRV_LookAcceleration_Aggressive CurveFloat keys 3
CRV_LookAcceleration_Linear CurveFloat keys 2
CRV_ParachutePunishment_Damage CurveFloat keys 2
CRV_SlopeGroundSpeedContribution CurveFloat keys 3

Inputs (77 files)

File Type Content
IA_Bribe BHInputAction Input.NamedActions.Player.Downed.Bribe; Boolean (omitted); triggers none
IA_Inventory_ChangeNext BHInputAction Input.NamedActions.Inventory.ChangeNext; Boolean (omitted); triggers Pressed
IA_Inventory_ChangeNextItem BHInputAction Input.NamedActions.Inventory.ChangeNextItem; Boolean (omitted); triggers Tap
IA_Inventory_ChangeNextWeapon BHInputAction Input.NamedActions.Inventory.ChangeNextWeapon; Boolean (omitted); triggers Tap
IA_Inventory_ChangePrevious BHInputAction Input.NamedActions.Inventory.ChangePrev; Boolean (omitted); triggers Pressed
IA_Inventory_ChangeQuickSlot0 BHInputAction Input.NamedActions.Inventory.Change.0; Boolean (omitted); triggers Tap
IA_Inventory_ChangeQuickSlot1 BHInputAction Input.NamedActions.Inventory.Change.1; Boolean (omitted); triggers Tap
IA_Inventory_ChangeQuickSlot2 BHInputAction Input.NamedActions.Inventory.Change.2; Boolean (omitted); triggers Tap
IA_Inventory_ChangeQuickSlot3 BHInputAction Input.NamedActions.Inventory.Change.3; Boolean (omitted); triggers Tap
IA_Inventory_ChangeQuickSlot4 BHInputAction Input.NamedActions.Inventory.Change.4; Boolean (omitted); triggers Tap
IA_Inventory_ChangeQuickSlot5 BHInputAction Input.NamedActions.Inventory.Change.5; Boolean (omitted); triggers Tap
IA_Inventory_ChangeQuickSlot6 BHInputAction Input.NamedActions.Inventory.Change.6; Boolean (omitted); triggers Tap
IA_Inventory_ChangeQuickSlot7 BHInputAction Input.NamedActions.Inventory.Change.7; Boolean (omitted); triggers Tap
IA_Inventory_ChangeQuickSlot8 BHInputAction Input.NamedActions.Inventory.Change.8; Boolean (omitted); triggers Tap
IA_Inventory_ChangeQuickSlot9 BHInputAction Input.NamedActions.Inventory.Change.9; Boolean (omitted); triggers Tap
IA_Inventory_ToggleHands BHInputAction Input.NamedActions.Inventory.ToggleHands; Boolean (omitted); triggers none
IA_Ping BHInputAction Input.NamedActions.Ping; Boolean (omitted); triggers Tap
IA_Player_Appliable_PrimaryUse BHInputAction Input.NamedActions.Appliable.PrimaryUse; Boolean (omitted); triggers Pressed
IA_Player_Appliable_SecondaryUse BHInputAction Input.NamedActions.Appliable.SecondaryUse; Boolean (omitted); triggers Pressed
IA_Player_BodyDrag BHInputAction Input.NamedActions.Player.BodyDrag; Boolean (omitted); triggers Pressed, Released
IA_Player_CancelClimbing BHInputAction Input.NamedActions.Player.Traversing.Climbing.Cancel; Boolean (omitted); triggers Pressed, Released
IA_Player_Crouch BHInputAction Input.NamedActions.Player.Crouch; Boolean (omitted); triggers Pressed, Released
IA_Player_CrouchProne BHInputAction Input.NamedActions.Player.CrouchProne; Boolean (omitted); triggers Pressed, Released
IA_Player_CutParachute BHInputAction Input.NamedActions.Player.CutParachute; Boolean (omitted); triggers Pressed
IA_Player_DecreaseScopeZoom BHInputAction Input.NamedActions.Player.ScopeZoom.Decrease; Axis1D; triggers none
IA_Player_DeployParachute BHInputAction Input.NamedActions.Player.DeployParachute; Boolean (omitted); triggers Pressed
IA_Player_DownedCallForHelp BHInputAction Input.NamedActions.Player.Downed.CallForHelp; Boolean (omitted); triggers Pressed
IA_Player_DownedGiveUp BHInputAction Input.NamedActions.Player.Downed.GiveUp; Boolean (omitted); triggers Pressed, Released
IA_Player_DownedHoldOn BHInputAction Input.NamedActions.Player.Downed.HoldOn; Boolean (omitted); triggers Pressed
IA_Player_Downed_MoreInfo BHInputAction Input.NamedActions.Player.Downed.MoreInfo; Boolean (omitted); triggers Pressed
IA_Player_FastSwim_Hold BHInputAction Input.NamedActions.Player.FastSwim.Hold; Boolean (omitted); triggers Pressed, Released
IA_Player_FastSwim_Toggle BHInputAction Input.NamedActions.Player.FastSwim.Toggle; Boolean (omitted); triggers Pressed
IA_Player_Focus BHInputAction Input.NamedActions.Player.Focus; Boolean (omitted); triggers Pressed, Released
IA_Player_Holdable_PrimaryUse BHInputAction Input.NamedActions.HoldableItem.PrimaryUse; Axis1D; triggers Pressed, Released
IA_Player_Holdable_SecondaryUse BHInputAction Input.NamedActions.HoldableItem.SecondaryUse; Axis1D; triggers Pressed
IA_Player_IncreaseScopeZoom BHInputAction Input.NamedActions.Player.ScopeZoom.Increase; Axis1D; triggers none
IA_Player_Inspect BHInputAction Input.NamedActions.HoldableItem.Inspect; Boolean (omitted); triggers Pressed
IA_Player_Jump BHInputAction Input.NamedActions.Player.Jump; Boolean (omitted); triggers Pressed, Released
IA_Player_JumpOffLadder BHInputAction Input.NamedActions.Player.JumpOffLadder; Boolean (omitted); triggers Pressed, Released
IA_Player_Lean BHInputAction Input.NamedActions.Player.Lean; Axis1D; triggers Pressed, Released
IA_Player_Lean_Left BHInputAction Input.NamedActions.Player.Lean.Left; Boolean (omitted); triggers Pressed, Released
IA_Player_Lean_Right BHInputAction Input.NamedActions.Player.Lean.Right; Boolean (omitted); triggers Pressed, Released
IA_Player_MoveDirectional BHInputAction Input.NamedActions.Player.MoveDirectional; Axis2D; triggers Hold
IA_Player_NoClipDown BHInputAction Input.NamedActions.Player.NoClip.Down; Boolean (omitted); triggers Hold
IA_Player_NoClipSuperSpeed BHInputAction Input.NamedActions.Player.NoClip.SuperSpeed; Boolean (omitted); triggers Hold
IA_Player_NoClipUp BHInputAction Input.NamedActions.Player.NoClip.Up; Boolean (omitted); triggers Hold
IA_Player_PrimaryAltUse BHInputAction Input.NamedActions.Player.PrimaryAltUse; Axis1D; triggers Pressed
IA_Player_PrimaryUse BHInputAction Input.NamedActions.Player.PrimaryUse; Axis1D; triggers Pressed
IA_Player_Prone BHInputAction Input.NamedActions.Player.Prone; Boolean (omitted); triggers Pressed, Released
IA_Player_ReadyUp BHInputAction Input.NamedActions.Player.Ready; Boolean (omitted); triggers Pressed
IA_Player_SecondaryUse BHInputAction Input.NamedActions.Player.SecondaryUse; Axis1D; triggers Pressed
IA_Player_SlideDownLadder_Hold BHInputAction Input.NamedActions.Player.SlideDownLadder.Hold; Boolean (omitted); triggers Pressed, Released
IA_Player_SlideDownLadder_Toggle BHInputAction Input.NamedActions.Player.SlideDownLadder.Toggle; Boolean (omitted); triggers Pressed, Released
IA_Player_SlowWalk BHInputAction Input.NamedActions.Player.SlowWalk; Boolean (omitted); triggers Pressed, Released
IA_Player_Sprint_Toggle BHInputAction Input.NamedActions.Player.Sprint; Boolean (omitted); triggers Pressed, Released
IA_Player_TacticalSprint_Toggle BHInputAction Input.NamedActions.Player.TacticalSprint; Boolean (omitted); triggers TapXTimes
IA_Player_ToggleScopeZoom BHInputAction Input.NamedActions.Player.ScopeZoom.Toggle; Boolean (omitted); triggers Pressed
IA_Player_Traverse BHInputAction Input.NamedActions.Player.Traversing; Boolean (omitted); triggers Pressed
IA_Player_TriggerUse BHInputAction Input.NamedActions.HoldableItem.TriggerUse; Boolean (omitted); triggers Pressed, Released
IA_UI_Back BHInputAction Input.NamedActions.UI.Back; Boolean (omitted); triggers Pressed
IA_UI_Click BHInputAction Input.NamedActions.UI.Click; Boolean (omitted); triggers Pressed
IMC_Action_FireWeapon InputMappingContext 2 default mappings, 1 actions
IMC_Action_ThrowExplosive InputMappingContext 7 default mappings, 3 actions
IMC_Emote InputMappingContext 5 default mappings, 1 actions
IMC_Inventory InputMappingContext 16 default mappings, 15 actions
IMC_LadderClimbing InputMappingContext 4 default mappings, 2 actions
IMC_Player InputMappingContext 30 default mappings, 16 actions
IMC_PlayerAiming InputMappingContext 11 default mappings, 8 actions
IMC_Player_BodyDrag InputMappingContext 2 default mappings, 1 actions
IMC_Player_Downed InputMappingContext 8 default mappings, 4 actions
IMC_Player_Falling InputMappingContext 2 default mappings, 1 actions
IMC_Player_NoClipping InputMappingContext 3 default mappings, 3 actions
IMC_Player_Parachuting InputMappingContext 2 default mappings, 1 actions
IMC_Player_Ready InputMappingContext 2 default mappings, 1 actions
IMC_Player_Swimming InputMappingContext 2 default mappings, 1 actions
IMC_Tipping InputMappingContext 4 default mappings, 2 actions
PIMC_Default_Config PlayerMappableInputConfig 13 contexts

Inputs/PlayerController (38 files)

File Type Content
IA_AdminPanel_Toggle BHInputAction UI.Action.Feature.AdminPanel.ToggleScene; Boolean (omitted); triggers Pressed
IA_Interact BHInputAction Input.NamedActions.Player.Interact; Boolean (omitted); triggers Pressed, Released
IA_Interaction_Next BHInputAction Input.NamedActions.Player.SelectInteraction.Next; Axis1D; triggers none
IA_Interaction_Previous BHInputAction Input.NamedActions.Player.SelectInteraction.Previous; Axis1D; triggers none
IA_Interaction_SceneClose BHInputAction Input.NamedActions.Player.SelectInteraction.Scene.Close; Boolean (omitted); triggers Pressed
IA_Look BHInputAction Input.NamedActions.Player.Look; Axis2D; triggers WDAimAssistInputModifier
IA_Loot BHInputAction Input.NamedActions.Player.Loot; Boolean (omitted); triggers Pressed, Released
IA_OpenVehicleInteractionMenu BHInputAction Input.NamedActions.Vehicle.OpenInteractionMenu; Boolean (omitted); triggers none
IA_PushToTalk_Proximity BHInputAction Input.NamedActions.Player.VOIP.PushToTalk.Proximity; Boolean (omitted); triggers Pressed, Released
IA_PushToTalk_Squad BHInputAction Input.NamedActions.Player.VOIP.PushToTalk.Squad; Boolean (omitted); triggers Pressed, Released
IA_Tip BHInputAction Input.NamedActions.Player.Tip; Boolean (omitted); triggers Tap
IA_Tip_Reject BHInputAction Input.NamedActions.Player.Tip.Reject; Boolean (omitted); triggers Tap
IA_UI_Chat_Open BHInputAction UI.Action.Feature.Chat.OpenChat; Axis1D; triggers Pressed
IA_UI_Chat_Open_Controller BHInputAction UI.Action.Feature.Chat.OpenChat.Controller; Boolean (omitted); triggers ChordAction
IA_UI_Chat_Open_ControllerChordedAction BHInputAction UI.Action.Feature.Chat.OpenChat.ControllerChordedAction; Boolean (omitted); triggers Hold
IA_UI_Inventory_Open BHInputAction UI.Action.Feature.Inventory.ToggleScene; Boolean (omitted); triggers none
IA_UI_Map_Open BHInputAction UI.Action.Feature.Map.ToggleScene; Boolean (omitted); triggers none
IA_UI_Map_ToggleZoomPreset BHInputAction Input.NamedActions.UI.Minimap.ToggleZoomPreset; Boolean (omitted); triggers Tap
IA_UI_Minimap_ZoomedIn BHInputAction Input.NamedActions.UI.Minimap.ZoomedIn; Boolean (omitted); triggers Pressed
IA_UI_Minimap_ZoomedOut BHInputAction Input.NamedActions.UI.Minimap.ZoomedOut; Boolean (omitted); triggers Pressed
IA_UI_PauseMenu_Open BHInputAction UI.Action.Feature.PauseMenu.ToggleScene; Boolean (omitted); triggers none
IA_UI_PingWheel BHInputAction UI.Action.Feature.PingWheel.ToggleScene; Boolean (omitted); triggers Hold
IA_UI_PreMatchInfo_ScrollDown BHInputAction Input.NamedActions.UI.PreMatchInfo.ScrollDown; Boolean (omitted); triggers Pressed
IA_UI_PreMatchInfo_ScrollUp BHInputAction Input.NamedActions.UI.PreMatchInfo.ScrollUp; Boolean (omitted); triggers Pressed
IA_UI_RadialWheel_EquipmentWheel BHInputAction UI.Action.Feature.RadialWheel.Equipment.ToggleScene; Boolean (omitted); triggers Hold
IA_UI_RadialWheel_VoiceChat BHInputAction UI.Action.Feature.RadialWheel.VoiceChat.ToggleScene; Boolean (omitted); triggers Hold
IA_UI_RadialWheel_VoiceChat_ChordedAction BHInputAction UI.Action.Feature.RadialWheel.VoiceChat.ToggleScene.ChordedAction; Boolean (omitted); triggers Hold
IA_UI_Scoreboard BHInputAction UI.Action.Feature.Scoreboard.ToggleScene; Boolean (omitted); triggers Pressed
IA_UI_VaultToggle BHInputAction UI.Action.Feature.Vendor.Vault.Toggle; Boolean (omitted); triggers Pressed
IA_VoiceChat_ToggleTalk BHInputAction Input.NamedActions.Player.VOIP.ToggleTalk; Boolean (omitted); triggers BHPlayerMappableKeySettings, Tap
IA_VoiceChat_ToggleTalk_Chorded BHInputAction Input.NamedActions.Player.VOIP.ToggleTalk.Chorded; Boolean (omitted); triggers Tap
IA_VoiceChat_ToggleVoiceChat BHInputAction Input.NamedActions.Player.VOIP.ToggleVoiceChat; Boolean (omitted); triggers Pressed
IA_VoiceChat_ToggleVoiceChat_Scoreboard BHInputAction UI.Action.Feature.Scoreboard.ToggleVoiceChat; Boolean (omitted); triggers none
IMC_Interaction InputMappingContext 2 default mappings, 1 actions
IMC_InteractionCycleOptions InputMappingContext 4 default mappings, 2 actions
IMC_PlayerController InputMappingContext 33 default mappings, 23 actions
IMC_PlayerControllerHighPriority InputMappingContext 1 default mappings, 1 actions
IMC_UIKeybinds_Registration InputMappingContext 2 default mappings, 1 actions

Inputs/ResponseCurves (4 files)

File Type Content
CRV_GamepadResponseCurve_Classic CurveFloat keys 3
CRV_GamepadResponseCurve_Dynamic CurveFloat keys 11
CRV_GamepadResponseCurve_Linear CurveFloat keys 2
CRV_GamepadResponseCurve_Standard CurveFloat keys 4

Inputs/TaggedActions (4 files)

File Type Content
IA_Player_Holdable_PrimaryUse_Release BHInputAction Input.NamedActions.HoldableItem.PrimaryUse.Release; Axis1D; triggers Released
IA_Player_Holdable_SecondaryUse_Release BHInputAction Input.NamedActions.HoldableItem.SecondaryUse.Release; Axis1D; triggers Released
IA_ThrowUnderarm_Release BHInputAction Input.NamedActions.Throwable.Throw.Secondary.Release; Axis1D; triggers Released
IA_Throw_Release BHInputAction Input.NamedActions.Throwable.Throw.Primary.Release; Axis1D; triggers Released

MovementFeatures (3 files)

| File | Type | Content | |—|—|—| | CRV_LMF_Ladder_ClimbOffAtTopAnimation | CurveVector | keys 2/3/3 | | CRV_LMF_Ladder_ClimbOntoAnimation | CurveVector | keys 2/2/2 | | CRV_LMF_Ladder_ClimbOntoFromTopAnimation | CurveVector | keys 2/2/4 |


7b. Round 40: speed pipeline, swimming, input contexts, death effect

Read from the restored exe (static), the pawn Blueprint defaults and the cooked data. Generated by _tools/round40_medical_movement.py; reading paths in the round 40 evidence.

Speed pipeline and pawn defaults

| Item | Reading | |—|—| | Walk speed (mode vtable slot 142) | stance speed = MaxSpeedModifier.ModifyValue(MaxSpeed) of the current stance, or MaxSpeed (+0x4C) when the stance has no modifier; while a stance change is running it is blended: prev + (cur - prev) x alpha; only when Stand (enum 2) and sprinting is it multiplied by the sprint scale (data +0x130) or the tactical sprint scale (+0x134), otherwise by a mode float (+168, writer not found); the WD mode then multiplies by an attribute evaluator (+272 for speed, +304 sprint, +320 tactical sprint, +352 friction) | | Where it is called | 0x52820C0 runs the thunk 0x5288D80, which calls slot 142 of the mode | | Other slots read | 142 (+0x470): 0x5291720 BH / 0x6DC1000 WD: walk speed; 144 (+0x480): 0x5291A90 / 0x6DC1050: sprint scale; 145 (+0x488): 0x5291FD0 / 0x6DC10F0: tactical sprint scale; 147 (+0x498): 0x5290900 / 0x6DC0E70: friction | | Result for the numbers on this page | Stand walk 428.8, sprint 608.9 and tactical sprint 664.6 stay as derived in 1b (Stand 0.8 x 536, x 1.42, x 1.55). Crouch (0.5) and Prone (0.15) have no sprint multiplier in this code path, so they cannot sprint at those scales (Native, static reading) | | Pawn defaults (CDO) | First-person FOV 106; ProneHeldThreshold 0.25; CloseAnimationDistance 3500; interaction server box [50.0, 50.0, 50.0]; WalkGunBobRotation = CRV_LandGunBob. Tactical sprint FOV: parent: keys (0,0) (0.25,5) (0.5,0), hold 0.25; WDCore pawn: delta 10, fade 0.25 in/out, hold 1.0. Kill FOV: parent: keys (0,0) (0.05,-2.5) (0.25,-2.5) (0.3,0) (1,0), chromatic aberration x2.0; WDCore pawn: duration 0.25, delta 11, chromatic aberration x3.5 | | Gamepad look acceleration | A user setting, not a map asset: UserSettings.Controls.Gamepad.LookAcceleration with .Curve (Standard, Linear or Aggressive = the three CRV_LookAcceleration* curves), .MagnitudeThreshold, .PitchWeight, .MaxMultiplier (exe strings). No exported asset references the curves | | Ping component | UWDPingComponent constructor 0x6B472C0 (UWDPingComponent): cooldown 0.1, double-ping threshold 0.25, trace angle 5, trace channel 26 (Native; units presumed) |

Swimming native defaults

DA_SwimmingMovement omits the speed cap, so the class default applies: swim speed 250 cm/s, fast swim x2 (500) draining 20 stamina per second. The asset overrides two values (water acceleration 4000, input deceleration 500).

| Swimming property | Native default | DA_SwimmingMovement | |—|—:|—| | MaxInputSpeed | 250 | omitted (default) | | InputAcceleration | 500 | omitted (default) | | InputDeceleration | 800 | 500.0 | | FastSwimMultiplier | 2 | omitted (default) | | FastSwimStaminaUsagePerSecond | 20 | omitted (default) | | bFastSwimConsumesStamina | 1 | omitted (default) | | WaterAcceleration | 1000 | 4000.0 | | MaxStepHeight | 40 | omitted (default) | | IdealImmersionDepth | 156 | omitted (default) | | IdealImmersionDepthTolerance | 7.5 | omitted (default) | | ImmersionDepthToStartSwimming | 170 | omitted (default) | | ImmersionDepthToStopSwimming | 120 | omitted (default) | | MaxBuoyancyForce | 3800 | omitted (default) | | BuoyancyFrictionUp | 3 | omitted (default) | | BuoyancyExpDragUp | 0.05 | omitted (default) | | BuoyancyFrictionDownSubmerged | 7.5 | omitted (default) | | BuoyancyExpDragDownSubmerged | 0.1 | omitted (default) | | BuoyancyFrictionDown | 5 | omitted (default) | | BuoyancyExpDragDown | 0.05 | omitted (default) |

Input contexts per mover mode

The shared keys in section 5 are resolved by which context is active: each mover mode asset carries its own InputMappingContext, added while the mode runs. Which one wins on a clash (context priority) is set natively and was not read.

| Mover mode | Context asset (set in the mode’s data asset) | Action | Keys | |—|—|—|—| | Falling | IMC_Player_Falling | IA_Player_DeployParachute | SpaceBar / Gamepad_FaceButton_Bottom | | Ladder | IMC_LadderClimbing | IA_Player_SlideDownLadder_Toggle | LeftShift / Gamepad_LeftThumbstick | | Ladder | IMC_LadderClimbing | IA_Player_JumpOffLadder | SpaceBar / Gamepad_FaceButton_Bottom | | Swimming | IMC_Player_Swimming | IA_Player_FastSwim_Toggle | LeftShift / Gamepad_LeftThumbstick | | Body dragging | IMC_Player_BodyDrag | IA_Player_BodyDrag | G / Gamepad_RightShoulder | | No clip | IMC_Player_NoClipping | IA_Player_NoClipDown / NoClipUp / NoClipSuperSpeed | LeftControl / SpaceBar / LeftShift |

Death-state effect (close eyes)

Blink and twitch settings: BlinkCycleDuration 5, BlinkCycleRandomness 0.35, BlinkCooldownDuration 0.65, MinimumBlinkOpenness 0.35, OpenHoldDuration 3.75, OpenHoldDurationRandomness 0.35, BlinkSpeedScaleFactor 0.85, TwitchDuration 0.5, TwitchMagnitude 0.3, MinBlurValue 1, EaseInOutExponent 0.65.

| Parameter | Start value | End value | Bleed-out fraction where it starts | where it ends | |—|—:|—:|—:|—:| | Eye_Mask_Visibility (linear) | - | - | 0.965 | 0.94 | | Exposure (linear) | 1 | 0 | - | - | | Eye_Strain_Visibility (linear) | - | - | 0.7 | 0.65 | | Blur_Strength (linear) | 1 | 3 | 0.9 | 0.2 | | Distortion_Amp (linear) | 0.0035 | 0.005 | 0.85 | 0.15 | | Distortion_Pulse_Speed (linear) | 0.03 | 0.05 | 0.85 | 0.15 | | Exposure (pulse 0.9 to 1, 1.5 s, intensity factor 2) | - | - | 0.6 | - | | Eye_Mask_Strain_Strength (pulse 0.75 to 2, 1.75 s, intensity factor 1.5) | - | - | 0.7 | - |

8. Open items

  • The thunk 0x5288D80 dispatches to mode vtable slot 142 (0x5291720, WD 0x6DC1000). Round 40 read it: the stance MaxSpeedModifier is applied to MaxSpeed and blended across a stance change (section 7b), which confirms the stance times base-speed rule.
  • Sprint and tactical sprint scale the standing speed (section 7b). Where the slow-walk setting is applied, and the writer of the mode float +168, are not traced.
  • Units of the damage-curve inputs and of the slope curve input are not exported.
  • The consumers of CRV_LandGunBob, the look-acceleration curves and the ladder animation curves are not traced.
  • Modifier Operation for the stance acceleration values is absent from the export (class default, presumed Set), so the acceleration rows read Set 7, 12 and 19 under that assumption.

9. Change log

Date Change
2026-10-22 v1: native class defaults for BHGroundMovementData, speed per stance, Player-folder curves, audio and components, index of all 137 files.