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).
StanceCooldown0.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).
MinStartTacSprintPercentageis 0.2 (Data; what it is a fraction of is not stated).BlockSprintTime0.8 s andBlockTacSprintTime0.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 setsMaxWalkableSlopeAngleModifier40 (degrees presumed). - Not found: a stamina field for plain sprint.
BHGroundMovementDatahasTacSprintStaminaUsagePerSecondonly (SDKBHMover_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
0x5288D80dispatches to mode vtable slot 142 (0x5291720, WD0x6DC1000). Round 40 read it: the stanceMaxSpeedModifieris applied toMaxSpeedand 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
Operationfor 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. |