Combat Slide
Run, hold C for a quarter second, and your character drops into a slide with its own over-the-shoulder camera.
Starting one
Get moving. The slide needs real ground speed — 2.5 m/s by default. Walking into it does nothing.
Hold
Cfor 250 ms. A tap is not enough; the hold is what distinguishes it from the key's normal job.Let go to stop early, or let it run its 1500 ms.
Activation modes
Config.ActivationType | Behaviour |
|---|---|
'Hold' | hold the key for Config.HoldDuration (250 ms) — the default |
'DoubleTap' | two presses within Config.DoubleTapWindow (400 ms) |
'SingleTap' | one press slides immediately |
With 'Hold', releasing the key ends the slide early because Config.HoldReleaseStopsSlide is true. Set it to false to let every slide run its full duration whether you keep holding or not.
When a slide is refused
| Condition | Default | Setting |
|---|---|---|
| Ground speed below 2.5 m/s | blocked | Config.MinSpeed |
| Not sprinting | allowed | Config.RequireSprint |
| Within 750 ms of the last slide | blocked | Config.Cooldown |
| In water | blocked | Config.AllowInWater |
| Indoors | allowed | Config.AllowIndoors |
| In melee combat | allowed | Config.AllowInCombat |
| Holding binoculars or a kit item | blocked | Config.BlockWithBinoculars |
| A wall within 1.6 m ahead | blocked | Config.ObstacleCheckDistance |
| A slide already running | blocked | the slide's own sliding flag |
A roll or a gun trick in progress does not block a slide. The only move canSlide tests for is its own sliding flag — it never calls IsRolling or IsSpinning — so a slide can start mid-roll or mid-trick. Every other condition in the table above is checked as normal. The exclusion runs one way only: a roll will not start during a slide, a gun trick will not start during a slide or a roll (and a running trick is cut if either starts), and diving stands down while any of the three runs.
The obstacle probe is what stops a player sliding face-first into a wall. Set Config.ObstacleCheckDistance = 0.0 to disable the check.
A slide also ends early if the ped dies, ragdolls, or gets on a mount or into a vehicle — Config.AbortOn.
Why incapacitated is off in Config.AbortOn
IS_PED_INCAPACITATED was observed returning true mid-slide on a player at full health with full cores on this RedM build, so it cannot be trusted to mean what its name says. Turning it on will cut slides short at random.
Steering and firing
Firing mid-slide
Hold aim through the slide and you can fire. INPUT_ATTACK is disabled whenever you are not aiming, which is what stops a slide being used to swing wildly. This is Config.BlockAttackUnlessAiming, and it ships true to match the original.
"Aiming" here means free-aim or the aim button held. That matters:
The original only checked free-aim
RDR2's assisted aim leaves IS_PLAYER_FREE_AIMING returning false even with the aim button down. The original mod only checked that native, so on a server where players use assisted aim the trigger stayed disabled for the whole slide. This port gates on the aim control as well, which is why firing works for everyone.
Set Config.BlockAttackUnlessAiming = false to allow firing during a slide without aiming at all.
Steering
The default is RedM-specific and differs from the original:
With FaceAimWhileSliding = true (default) | With it false (the original) | |
|---|---|---|
| Direction | the body faces where you look, so the slide goes that way | not pinned — while you are not aiming the heading is only read, so the direction is whatever the ped's own locomotion does |
A / D | drift sideways, up to Config.SlideDrift (1.0 m/s) | steer ±Config.SteerRate (2.5°) per frame, only while aiming |
S | brakes down to Config.SlideBrakeSpeed (1.5 m/s), never backwards | nothing |
The reason for the change: the body lagged up to 55° behind the view when aim started, and because the slide camera sits behind the view, that put the player's own head in the middle of the screen.
Config.FaceWhereYouAim is a separate switch, and ships off. On, the body keeps facing your aim while you aim and the game pushes the slide to the right. Off, the body goes side-on while aiming and the slide carries on forward.
Config.LockHeading should stay false
Writing the heading while not aiming stops the ped turning to face where you are aiming, which prevents the weapon ever reaching a firable state. The original never does this.
Dead Eye and bullet time
Two mutually exclusive options — the menu unticks one when you tick the other.
| Default | What it does | |
|---|---|---|
Config.EnableDeadEyeAutomaticallyDuringSlide | on | aiming during a slide triggers Dead Eye; it ends when the slide does |
Config.EnableBulletTimeDuringSlide | off | slows time locally, at Config.BulletTimeScale (0.4) |
Bullet time desyncs the player
It changes time scale for the whole client, so the player using it sees the world slowed while everyone else sees them moving normally. It ships off for that reason. On a populated server, block it outright from server.cfg so a player cannot turn it back on from the menu:
setr combat_slide_allow_timescale "false"Stamina
| Default | |
|---|---|
Config.StaminaDrainRate | 2.0 per second of sliding |
Config.StaminaSafetyFloor | 10 |
The safety floor is a RedM addition. An empty stamina core makes RDR2 start draining the health core instead, so draining stops once stamina reaches 10. This was investigated as a cause of players dying mid-slide and ruled out — it is kept because it stops a long test session wearing a player down, not because it fixes a bug. Set it to 0 for exact parity with the original.
The slide camera
On by default (Config.CustomCamera). Every value in Config.Camera was read out of the decompiled camera routine in the original ASI rather than chosen by eye:
| Default | ||
|---|---|---|
distance | 2.80 | metres back along the view direction |
rightOffset | 0.55 | metres right, over the shoulder |
heightOffset | -0.40 | relative to the ped's feet — below them |
pitchOffset | 0.0 | the original adds nothing to the gameplay pitch |
fovMultiplier | 1.0 | and nothing to the FOV |
headClearance | 0.30 | RedM: lift the camera to keep the head out of screen centre |
easeIn / easeOut | 500 | ms |
Because pitch and FOV are taken from the gameplay camera verbatim, the slide does not change your view angle — it only moves the shot. avoidClipping pulls the camera in when a wall is behind you.
Config.ForceThirdPerson is declared in config.lua but never read by any file in the resource, so changing it does nothing. First person is suppressed per frame on a different test: whether the player was in first person when the slide started, and Config.Apply.camera. That is independent of Config.CustomCamera — with the slide camera off, third person is still forced. The full camera picture, including the two dive cameras, is on Cameras.
The animation
Taken from the original ASI, including the flag word:
| Entry | …@sliding@slide@run@slide_entry@down / transition |
| Exit | …@sliding@slide@run@slide_exit / start_fwd_45 |
| Flags | 65552 (0x10010) — AF_UPPERBODY + AF_TAG_SYNC_CONTINUOUS |
| ikFlags | 512 (0x200) |
| Blend in / out | 8.0 / 1.0 |
Note what is not in that flag word: no AF_SECONDARY, no AF_FORCE_START, no AF_NOT_INTERRUPTABLE and no mover extraction. Earlier versions of this port tried 131082, 655360, 131104 and 131072 — all of them wrong.
The clip is sustained two ways: re-issued on any frame it is not playing, and rewound from phase 0.95 back to 0.50 when it reaches the end. An upper-body bone filter keeps the player holding their weapon, picked from what is equipped:
| Weapon | Filter |
|---|---|
| Long arm | norightarm_filter |
| Sidearm | norighthand_filter |
| Kit item | nohands_filter |
Set Config.Anim.useWeaponFilters = false for a plain full-body slide.
Menu rows
Combat Moves → Combat Slide, or the Slide tab.
| Section | Rows |
|---|---|
| Behaviour | Activation, Duration, Extra speed, Release stops slide, Crouch afterwards, Mud decal |
| Combat | Dead Eye when aiming, Bullet time when aiming, Aim to fire, Face where you look, Face where you aim, Side drift, Brake to, Stamina drain |
| Camera | Slide camera, Distance, Height, Shoulder offset |
Every row applies live. Changes last until the resource restarts — to make one permanent, set it in config.lua.
Other settings
| Default | ||
|---|---|---|
Config.SlideDuration | 1500 | ms |
Config.InfiniteSlide | false | slide until stopped manually |
Config.MaxInfiniteDuration | 10000 | RedM safety cap, so a stuck client cannot slide forever |
Config.CrouchAfterSlide | true | stay crouched when it ends |
Config.SlideSpeed | 0.0 | extra speed on top; 0 lets the clip move the ped, as the original does |
Config.ApplyMudDecal | false | splash mud on the player's back at phase 0.2 |
Config.SlideResetFlags | { 93 } | PRF_DontQuitMotionAiming, re-applied every frame |
Never add reset flag 27
PRF_BlockWeaponFire. It will stop the weapon firing mid-slide, which is the one thing the whole port was tuned to make work.
Config.MovementMode is declared in config.lua and never read by the slide — its only appearance in the slide path is being copied into the cs_sweep report. Setting it to 'anim' does not disable the velocity code.
There are two velocity blocks and they are gated differently. The forward push needs Config.Apply.velocity and Config.SlideSpeed > 0.0, so at the shipped SlideSpeed = 0 it never runs. The A/D drift and S brake need only Config.FaceAimWhileSliding and Config.Apply.velocity, both of which ship on — so they do run on every slide. Config.Apply.velocity = false is the only switch that stops both.
Disabled controls
Exactly the six the original disables, each with related actions also disabled:
INPUT_MELEE_ATTACK, INPUT_MELEE_GRAPPLE, INPUT_MELEE_GRAPPLE_ATTACK, INPUT_MELEE_GRAPPLE_CHOKE, INPUT_MELEE_GRAPPLE_REVERSAL, INPUT_MELEE_BLOCK
Note it does not disable jump, cover, duck or dive. Combat action-disable flags 0–34 are also set for the duration, so sliding into an NPC does not turn into a tackle or grapple and cancel the animation.
If the animation does not play
Config.Apply switches every individual thing a slide does to the ped — animation, camera, velocity, heading, controls, action flags, reset flags, stamina — separately. With all of them false a slide does nothing but run its timer, so one can be turned back on at a time to find which one breaks something.
cs_sweep is a cumulative bisection rather than a full matrix: eight fixed rows, one slide each. Row 1 has every Config.Apply key false, and each row after it turns one more piece back on — velocity, heading, controls, action flags, reset flags, stamina plus animation, camera. Each slide prints whether the animation played and how many rounds came out, and the summary table is keyed on whether the slide killed you. See Debug commands.