-
Notifications
You must be signed in to change notification settings - Fork 10
Movement changes
- Please make sure to read Modding prerequisites page in order to use new ACS properties listed below
Many new properties were added to better tweak movement mechanics
-
*footstep
- A sound alias for footsteps - It is possible to disable wall friction by using the
+compat_disable_wall_friction 1
flag. The game might still stop you sliding along a wall every once in a while, but it recommended to enable this flag when playing with Quake or Quake CPM movement. This flag is also available in compatibility options.
Decorate | ACS | Default | Description |
---|---|---|---|
Player.ForwardMove | - | 1,1,1,1 |
Walking , Running , Crouch walking , Crouch running speed scale when moving forward and backward |
Player.SideMove | - | 1,1,1,1 |
Walking , Running , Crouch walking , Crouch running speed scale when strafing left and right |
Player.CrouchScale | APROP_CrouchScale | 0.5 | Player crouch factor |
Player.CrouchChangeSpeed | APROP_CrouchChangeSpeed | 0.08 | Speed at what the crouch factor changes |
Player.FootstepInterval | APROP_FootstepInterval | 12 | Delay in tics between footsteps sound. Also determines how often an Effect Actor is spawned |
Player.FootstepVolume | APROP_FootstepVolume | 1.0 | Footsteps sound volume |
Player.AirAcceleration | APROP_AirAcceleration | 0.25 | Player acceleration while in the air |
Player.VelocityCap | APROP_VelocityCap | 0 | Horizontal velocity cap |
Player.MvType | APROP_MvType | 0 | Movement type. 0 for vanilla Doom, 1 for Quake |
+SILENT | APROP_Silent | Disable all movement sounds such as footsteps, jumping, landing, crouch sliding and wall climbing |
ACS | SBARINFO | Description |
---|---|---|
APROP_JumpTics | "JumpTics" | Remaining tics until jump is ready again |
APROP_SecondJumpTics | "SecondJumpTics" | Remaining tics until second jump is ready again |
APROP_SecondJumpsRemaining | "SecondJumpsRemaining" | Amount of second jumps left |
APROP_SecondJumpState | - | Tells whether the second jump is currentlty ready (SJ_READY ), available (SJ_AVAILABLE ) or not available (SJ_NOTAVAILABLE ) |
Notes:
-
Player.ForwardMove
andPlayer.SideMove
- walking and crouch running speed is two times smaller than running speed, and crouch walking is a quarter of running speed. That means that if you want the player to always walk at the same speed, you need to set these properties to2,1,4,2
. -
Player.ForwardMove
is by default 4%,25%,8%,4% higher thanPlayer.SideMove
. So, if you want the player to strafe as fast as moving forward, then usePlayer.SideMove 1.04,1.25,1.08,1.04
-
Player.VelocityCap
only affects velocity produced by player movement. External thrusts like jumppads or rocketboosts can still exceed this limit and it will remain until the player slows down due to ground friction or hits a wall.
Q-Zandronum has a concept called Second jump
. To trigger second jump you need to first be in the air and then press the jump key. However, that is not available by default, because the Player.SecondJumpAmount
property is 0
. Increasing the value will essentially grant the player a double jump ability.
-
*jump
- A sound alias for jumps -
*secondjump
- A sound alias for second jumps -
*edgejump
- A sound alias for edge jumps
Decorate | ACS | Default | Description |
---|---|---|---|
Player.JumpZ | APROP_JumpZ | 8 | Vertical thrust when jumping |
Player.JumpXY | APROP_JumpXY | 0 | Horizontal thrust when jumping |
Player.JumpDelay | APROP_JumpDelay | 7 | Delay in tics between jumps |
Player.SecondJumpZ | APROP_SecondJumpZ | 8 | Vertical thrust when doing a second jump |
Player.SecondJumpXY | APROP_SecondJumpXY | 0 | Horizontal thrust when doing a second jump |
Player.SecondJumpDelay | APROP_SecondJumpDelay | 7 | Delay in tics after the first jump and between second jumps |
Player.SecondJumpAmount | APROP_SecondJumpAmount | 0 | Amount of second jumps available to the player. Using -1 will grant infinite second jumps |
Player.DoubleTapMaxTics | APROP_DoubleTapMaxTics | 10 | Max time in tics to perform a double tap second jump |
+WALLJUMP | APROP_WallJump | Seconds jumps can only be triggered when the player is near a wall | |
+WALLJUMPV2 | APROP_WallJumpV2 | Same as the above, but the player will be thrusted at a opposite direction of a wall instead of based on player input | |
+GROUNDSECONDJUMP | APROP_GroundSecondJump | Allows the actor to perform second jumps right from the ground | |
+ABSOLUTESECONDJUMP | APROP_AbsoluteSecondJump | Second jumps will set velocity instead of adding to it | |
+DOUBLETAPJUMP | APROP_DoubleTapJump | Disable second jumps by pressing +jump key and instead do a second jump by double tapping movement keys. However, it doesn't disable the +user4 key if +USER4JUMP is ON. |
|
+EDGEJUMP | APROP_EdgeJump | By default first jumps will override vertical velocity. Using this flag will instead add jump velocity to whatever the player had at the moment, thus allowing much higher jumps when taking ramps, stairs or ledges. Make sure to assign a sound to *edgejump alias or else edge jumps will be silent |
|
+ELEVATORJUMP | APROP_ElevatorJump | Jumping on an elevator that is moving up will make player jump higher | |
+USER4JUMP | APROP_User4Jump | Binds second jump key to +user4 instead of +jump |
Notes:
- It is not possible to do a wall jump off an invisible
Block everything
orBlock players
linedef. If you want players to do a walljump off it, make sure to use theImpassable
flag for the linedef.
Q-Zandronum has a built-in support for wall climbing. In order to begin climbing you need to face a wall and then press forward and jump keys simultaneously
-
*wallclimb
- A sound alias for wall climbing
Decorate | ACS | Default | Description |
---|---|---|---|
+WALLCLIMB | APROP_WallClimb | Enable wall climbing | |
Player.WallClimbSpeed | APROP_WallClimbSpeed | 5.0 | Wall climbing speed |
Player.WallClimbFriction | APROP_WallClimbFriction | 1.25 | Horizontal friction when climbing a wall. Keep in mind that wall friction uses different formulas in Doom and Quake movements, thus different WallClimbFriction values are required to achieve similar results. Default 1.25 is designed for Doom movement. To achieve a similar friction in Quake you need to bump the value up to about 4.0 . |
Player.WallClimbMaxTics | APROP_WallClimbMaxTics | 70.0 | Maximum tics the player can climb without touching the ground |
Player.WallClimbRegen | APROP_WallClimbRegen | 2.0 | How much wall climb stamina to restore per tic. Stamina can only restore when staying on ground |
ACS | SBARINFO | Description |
---|---|---|
APROP_IsWallClimbing | - | Whether the player is currently wall climbing |
APROP_WallClimbTics | "WallClimbTics" | Remaining wall climb tics |
Notes:
- It is not possible to climb an invisible
Block everything
orBlock players
linedef. If you want players to climb it, make sure to use theImpassable
flag for the linedef.
Unlike default Doom movement, where in order to go faster you need to strafe run, in Quake movement running diagonally does not increase speed at all. Instead you have to utilize a mechanic known as Strafe Jumping
or Bunny Hopping
.
-
Player.MvType 1
- This will enable Quake movement. It is highly recommended to also usePlayer.JumpDelay 0
andPlayer.SideMove 1.04,1.25,1.08,1.04
to achieve a more canon quake movement mechanic -
*crouchslide
- A sound alias for crouch sliding
Below values are only relevant to Quake movement type
Decorate | ACS | Default | Description |
---|---|---|---|
Player.GroundAcceleration | APROP_GroundAcceleration | 10.0 | Acceleration when player is on ground |
Player.GroundFriction | APROP_GroundFriction | 6.0 | Ground friction |
+CPMAIRCONTROL | APROP_CpmAirControl | Enable CPM-like air control | |
Player.CpmAirAcceleration | APROP_CpmAirAcceleration | 12 | Air acceleration for CPM character |
Player.CpmMaxForwardAngleRad | APROP_CpmMaxForwardAngleRad | 0.122173 | Max angle (in radians) a player can immediately turn per tick without losing velocity |
+CROUCHSLIDE | APROP_CrouchSlide | Enable crouch sliding | |
Player.CrouchSlideAcceleration | APROP_CrouchSlideAcceleration | 10.0 | Player acceleration when crouch sliding |
Player.CrouchSlideFriction | APROP_CrouchSlideFriction | 1.0 | Ground friction when crouch sliding |
Player.CrouchSlideMaxTics | APROP_CrouchSlideMaxTics | 70.0 | How long a player can crouch slide without resting |
Player.CrouchSlideRegen | APROP_CrouchSlideRegen | 2.0 | How much crouch slide stamina to restore per tic. Stamina restores at any time when not sliding, be it on ground or in the air |
ACS | SBARINFO | Description |
---|---|---|
APROP_IsCrouchSliding | - | Whether the player is currently crouch sliding |
APROP_CrouchSlideTics | "CrouchSlideTics" | Remaining crouch slide tics |
- Quake CPM aka Quake Challenge ProMod was a mod for Quake 3 that was so good that it became a canon. The main difference is that in CPM you have much better air control and can turn at a wide angle while in the air.
Q-Zandronum has a built-in support for wall running above ground. It is called Air Wall Running
to avoid confusion with the Wall Run speed bug
. In order to air wall run you need to jump onto it and input your movement along the wall in the direction you want to go.
-
*footstep
- Wall running uses the same sound alias as normal running
Decorate | ACS | Default | Description |
---|---|---|---|
+AIRWALLRUN | APROP_AirWallRun | Enable wall running | |
Player.AirWallRunMaxTics | APROP_AirWallRunMaxTics | 70.0 | Maximum tics the player can run along the wall |
Player.AirWallRunRegen | APROP_AirWallRunRegen | 2.0 | How much wall run stamina to restore per tic. Stamina always recharges when you are not wall running |
Player.AirWallRunMinVelocity | APROP_AirWallRunMinVelocity | 10.0 | The minimum velocity the player should have to be able to wall run |
ACS | SBARINFO | Description |
---|---|---|
APROP_IsAirWallRunning | - | Whether the player is currently air wall running |
APROP_AirWallRunTics | "AirWallRunTics" | Remaining air wall run tics |
Notes:
- Wall Running currently only works in Quake movement
- It is not possible to air wall run along an invisible
Block everything
orBlock players
linedef. If you want players to do that, make sure to use theImpassable
flag for the linedef.