Skip to content

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 ​

  1. Get moving. The slide needs real ground speed — 2.5 m/s by default. Walking into it does nothing.

  2. Hold C for 250 ms. A tap is not enough; the hold is what distinguishes it from the key's normal job.

  3. Let go to stop early, or let it run its 1500 ms.

Activation modes ​

Config.ActivationTypeBehaviour
'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 ​

ConditionDefaultSetting
Ground speed below 2.5 m/sblockedConfig.MinSpeed
Not sprintingallowedConfig.RequireSprint
Within 750 ms of the last slideblockedConfig.Cooldown
In waterblockedConfig.AllowInWater
IndoorsallowedConfig.AllowIndoors
In melee combatallowedConfig.AllowInCombat
Holding binoculars or a kit itemblockedConfig.BlockWithBinoculars
A wall within 1.6 m aheadblockedConfig.ObstacleCheckDistance
A slide already runningblockedthe 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)
Directionthe body faces where you look, so the slide goes that waynot pinned — while you are not aiming the heading is only read, so the direction is whatever the ped's own locomotion does
A / Ddrift sideways, up to Config.SlideDrift (1.0 m/s)steer ±Config.SteerRate (2.5°) per frame, only while aiming
Sbrakes down to Config.SlideBrakeSpeed (1.5 m/s), never backwardsnothing

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.

DefaultWhat it does
Config.EnableDeadEyeAutomaticallyDuringSlideonaiming during a slide triggers Dead Eye; it ends when the slide does
Config.EnableBulletTimeDuringSlideoffslows 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:

cfg
setr combat_slide_allow_timescale "false"

Stamina ​

Default
Config.StaminaDrainRate2.0 per second of sliding
Config.StaminaSafetyFloor10

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
distance2.80metres back along the view direction
rightOffset0.55metres right, over the shoulder
heightOffset-0.40relative to the ped's feet — below them
pitchOffset0.0the original adds nothing to the gameplay pitch
fovMultiplier1.0and nothing to the FOV
headClearance0.30RedM: lift the camera to keep the head out of screen centre
easeIn / easeOut500ms

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
Flags65552 (0x10010) — AF_UPPERBODY + AF_TAG_SYNC_CONTINUOUS
ikFlags512 (0x200)
Blend in / out8.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:

WeaponFilter
Long armnorightarm_filter
Sidearmnorighthand_filter
Kit itemnohands_filter

Set Config.Anim.useWeaponFilters = false for a plain full-body slide.

Combat Moves → Combat Slide, or the Slide tab.

SectionRows
BehaviourActivation, Duration, Extra speed, Release stops slide, Crouch afterwards, Mud decal
CombatDead Eye when aiming, Bullet time when aiming, Aim to fire, Face where you look, Face where you aim, Side drift, Brake to, Stamina drain
CameraSlide 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.SlideDuration1500ms
Config.InfiniteSlidefalseslide until stopped manually
Config.MaxInfiniteDuration10000RedM safety cap, so a stuck client cannot slide forever
Config.CrouchAfterSlidetruestay crouched when it ends
Config.SlideSpeed0.0extra speed on top; 0 lets the clip move the ped, as the original does
Config.ApplyMudDecalfalsesplash 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.

Documentation for RedMorrow. Scripts are licensed per server — redistribution is not permitted.