Skip to content

Combat Moves Configuration ​

Everything lives in config.lua, which ships readable. client/keys.lua does too, so you can add a key name that is not listed.

The three layers ​

LayerSet inAuthority
Convarsserver.cfghighest — a player cannot get past these
config.luathe filethe defaults every client starts with
In-game menuthe panelthat player's own session, lost on restart

A value changed in the menu applies immediately and lasts until the resource restarts. It is not saved and not sent to anyone else.

  • To make a value permanent, put it in config.lua.
  • To make a value unreachable, use a convar or hide the row.

Input ​

Default
Config.MenuKey'PGUP'nil for the command only
Config.MenuMousetruecursor in the menu
Config.InputMode'key''key', 'control' or 'keymap'
Config.SlideKey'C'used by 'key' mode
Config.SlideInput'INPUT_COVER'used by 'control' mode
Config.DefaultKey'C'the opening offer in 'keymap' mode
Config.SuppressWhileHeld{ 'INPUT_LOOK_BEHIND' }actions to swallow while the slide key is held
Config.ActivationType'Hold''Hold', 'DoubleTap' or 'SingleTap'
Config.HoldDuration250ms, for 'Hold'
Config.DoubleTapWindow400ms, for 'DoubleTap'
Config.HoldReleaseStopsSlidetrueletting go ends the slide early

C is Look Behind by default, which is why SuppressWhileHeld has that entry. If you change SlideKey, change it to match — or set it to {} to leave the vanilla action alone.

Slide behaviour ​

Default
Config.InfiniteSlidefalseslide until stopped manually
Config.SlideDuration1500ms
Config.MaxInfiniteDuration10000RedM hard cap, so a stuck client cannot slide forever
Config.CrouchAfterSlidetrue
Config.CustomCameratruethe slide camera
Config.EnableDeadEyeAutomaticallyDuringSlidetrue
Config.EnableBulletTimeDuringSlidefalsedesyncs the player — see below
Config.BulletTimeScale0.4lower is slower
Config.StaminaDrainRate2.0per second of sliding
Config.StaminaSafetyFloor10RedM; 0 for parity with the original
Config.SlideSpeed0.0extra speed; 0 lets the clip move the ped
Config.ApplyMudDecalfalse

Bullet time is a client-wide time-scale change

The player using it sees the world slowed while everyone else sees them moving normally. It ships off. Block it from server.cfg so the menu cannot turn it back on — see Server setup.

The stamina safety floor exists because an empty stamina core makes RDR2 start draining the health core. It was investigated as a cause of players dying mid-slide and ruled out; it is kept only so a long session does not wear a player down.

Movement tuning ​

RedM-specific. Covered in full on Combat Slide.

Default
Config.MovementMode'velocity'dead — declared but never read; the forward push is gated on Config.Apply.velocity and SlideSpeed > 0, the drift and brake on Config.Apply.velocity alone
Config.LockHeadingfalseleave this off — on, the weapon never reaches a firable state
Config.SteerRate2.5degrees per frame, the original's value
Config.FaceAimWhileSlidingtrueface where you look; A/D drift, S brakes
Config.SlideDrift1.0m/s of sideways drift
Config.SlideBrakeSpeed1.5m/s that S brakes down to
Config.FaceWhereYouAimfalsekeep facing your aim while aiming

When sliding is allowed ​

Default
Config.MinSpeed2.5m/s of ground speed required
Config.RequireSprintfalsetrue demands a real sprint, not a jog
Config.Cooldown750ms between slides
Config.AllowInWaterfalse
Config.AllowIndoorstrue
Config.AllowInCombattruefalse blocks sliding while in melee combat
Config.BlockWithBinocularstrue
Config.KeepWeaponDrawntruegates the Config.SlideResetFlags loop; it never re-equips anything
Config.ObstacleCheckDistance1.6metres; 0.0 disables the probe
Config.ForceThirdPersontruedead — declared but never read; third person is forced only when the slide started in first person and Config.Apply.camera is on
Config.SlideResetFlags{ 93 }PRF_DontQuitMotionAiming

Never add reset flag 27

PRF_BlockWeaponFire will stop the weapon firing mid-slide. Note also that the list above is only applied while Config.KeepWeaponDrawn is true — the two rows are not independent, and setting KeepWeaponDrawn to false stops flag 93 being applied at all.

Config.AbortOn decides which ped states cut a slide short — dead, ragdoll, mount and vehicle are on; incapacitated is off, because IS_PED_INCAPACITATED was observed firing mid-slide on a player at full health.

Animation ​

Config.Anim holds the dictionaries, clips, flags, filters and timing read out of the original ASI. Full table on Combat Slide. The ones worth touching:

Default
useWeaponFilterstruefalse gives a plain full-body slide
forceFilternilforce one filter for testing
disabledfalsedead — declared but never read; for a slide with no animation task set Config.Apply.anim = false
femaleEntryDict / femaleExitDictnilthe defaults read fine on female models

Combat Roll ​

Default
Config.Roll.enabledtrue
Config.Roll.trigger'key'
Config.Roll.key'LALT'
Config.Roll.cooldown900
Config.Roll.requireAimingfalse
Config.Roll.allowFromStandstilltrue
Config.Roll.faceCameratrue
Config.Roll.lockHeadingtrue
Config.Roll.disablePainAudiotrue
Config.Roll.handoverPhase0.84
Config.Roll.exitPhase0.005
Config.Roll.phaseTimeoutMs2000

The phase values and the menu-slider caveat are on Combat Roll.

Gun Tricks ​

Default
Config.GunTricks.enabledtrue
Config.GunTricks.key'N' — push-to-talk in RedM
Config.GunTricks.doubleTapWindow400
Config.GunTricks.holdToStopMs500
Config.GunTricks.nextTrickKeynil
Config.GunTricks.requirePistoltrue
Config.GunTricks.handMode'auto'
Config.GunTricks.holsterOnStoptrue
Config.GunTricks.cooldown600
Config.GunTricks.random'start'
Config.GunTricks.notifyOnChangetrue
Config.GunTricks.hudMode'none'
Config.GunTricks.slots{}
Config.GunTricks.nativeSlots{}
Config.GunTricks.suppressSlotControlstrue
Config.GunTricks.suppressSelectKeystrue
Config.GunTricks.promptForceEnableControlsfalse

Full detail on Gun Tricks.

Dive, Crawl & Gun ​

The inputs, the .ini switches and the recovered constants are all under Config.Dive. The complete tables are on Dive, Crawl & Gun; the headline values:

Default
Config.Dive.enabledtrue
Config.Dive.keyboard.diveInput'G'
Config.Dive.keyboard.proneInput'INPUT_DUCK'
Config.Dive.keyboard.proneHoldTime500
Config.Dive.enableIFramesDuringDivetrue — think about this one
Config.Dive.minStaminaToDive10.0
Config.Dive.diveStaminaCost9.0
Config.Dive.cooldown800
Config.Dive.backwardTransitionToSittingfalse
Config.Dive.holdStillWhileProneAimingtrue
Config.Dive.crawlWalkSpeed0.0
Config.Dive.enableProneCameratrue
Config.Dive.enableDiveCameratrue

Stealth is under Config.Dive.stealth — see Stealth mode.

Everything under Config.Dive.anim is verbatim from the decompile

69 call sites, each with its own flags, ikFlags, bone filter and blend times. Changing a value there is not a tuning exercise; measure first with cs_diveanim and cs_flags, which print real clip durations and decode flag bits by name.

Debug ​

lua
Config.Debug = true    -- ships ON

Set this to false before you go live

It ships true, which prints a state report to every player's own console after every slide, roll, trick and dive.

It only gates printing

client/debug.lua registers all 28 cs_* commands and /unstuck whether Config.Debug is on or off, and the two diagnostic threads only start when a player runs cs_watch or cs_dive. So turning it off does not remove the commands — and /unstuck keeps working in production, which is what you want. See Debug commands.

Bisection switches ​

Config.Apply switches every individual thing a slide does to the ped. In normal use they should all be true.

lua
Config.Apply = {
    anim        = true,  -- TASK_PLAY_ANIM
    camera      = true,  -- the scripted slide camera
    velocity    = true,  -- SET_ENTITY_VELOCITY each frame
    heading     = true,  -- SET_ENTITY_HEADING each frame
    controls    = true,  -- the DISABLE_CONTROL_ACTION list
    actionFlags = true,  -- _SET_PED_ACTION_DISABLE_FLAG
    resetFlags  = true,  -- SET_PED_RESET_FLAG; also needs Config.KeepWeaponDrawn
    stamina     = true,  -- _CHANGE_PED_STAMINA
}

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 drives them automatically, one configuration per slide, recording whether the animation played and whether a shot came out.

Disabled controls ​

lua
Config.DisabledControls = {
    'INPUT_MELEE_ATTACK',
    'INPUT_MELEE_GRAPPLE',
    'INPUT_MELEE_GRAPPLE_ATTACK',
    'INPUT_MELEE_GRAPPLE_CHOKE',
    'INPUT_MELEE_GRAPPLE_REVERSAL',
    'INPUT_MELEE_BLOCK',
}
Config.DisableRelatedActions   = true
Config.BlockAttackUnlessAiming = true

Exactly the six the original disables. Note it does not disable jump, cover, duck or dive. Config.ActionDisableFlags is built as 0–34 and is used by the clean-up path.

Where the original's .ini names went ​

Combat Slide.iniconfig.lua
SlideInputConfig.SlideKey
ActivationTypeConfig.ActivationType
HoldDurationConfig.HoldDuration
HoldReleaseStopsSlidesame name
InfiniteSlideConfig.InfiniteSlide
SlideDurationConfig.SlideDuration
CrouchAfterSlidesame name
CustomCameraConfig.CustomCamera
EnableDeadEyeAutomaticallyDuringSlidesame name
EnableBulletTimeDuringSlidesame name
BulletTimeScaleConfig.BulletTimeScale
StaminaDrainRateConfig.StaminaDrainRate
SlideSpeedConfig.SlideSpeed
ApplyMudDecalConfig.ApplyMudDecal

CombatRoll.ini's JOHN_ONLY is dropped — meaningless with arbitrary character models. GunTricks.ini only configured its own menu key. Dive - Crawl N Gun.ini keeps its names under Config.Dive, with both control sections preserved as Config.Dive.keyboard and Config.Dive.controller.

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