Strafe jump/ |
Max speed is exceeded because the dot product of velocity and wish direction is compared with the max speed. The raw magnitude of the velocity should have been compared to the max speed instead. Slightly more technical than that, but I'm keeping this short because PM_Accelerate is kind of a mess of buginess. Watch any Q3 movement tutorial. |
Horizontal overbounce (HOB) | PM_WalkMove sometimes handles collisions instead of PM_AirMove when a player lands on the ground, and some weird logic allows the player to keep their original speed after PM_ClipVelocity is called to slide along the ground.To abuse: Land from a fall that started at a set of specific heights and don't jump. |
Overbounce/ |
A horizontal overbounce happens, but the player's horizontal speed is zero. A small amount of over bounce (0.001 * speed * normal) is added after impact with the surface. The result is then normalized, and the player flies back into the air. To abuse: Do a HOB, but make sure your horizontal velocity is 0 u/s. |
Diagonal overbounce (DOB) | A horizontal overbounce occurs, and the player's horizontal speed is similar to the magnitude of the vertical over bounce that is added after the collision. The resulting velocity vector points diagonally away from the surface, and the player flies into the air at an angle. To abuse: Setup for a VOB, but tap a direction key right before you hit the ground. This requires luck. |
Sticky overbounce | The player gets stuck on a wall and quickly builds up speed while stopped. I'm unsure if this is really an overbounce. To abuse: Unsure. |
Wall clip/ |
Player clips the wall for a brief moment after jumping, but retains original velocity. What happens is that a timer is set for 250 ms when the player lands from a jump (technically when the player is falling faster than 100 u/s). The timer was intended to be used to prevent players from jumping within 250 ms of when they landed. This is actually used with water jumps, but with a time of 2 s. For some reason, when this timer is set, some code runs that bypasses clipping. Friction still applies. To abuse: Land on the ground, then clip a corner immediately after your next jump. |
Jump key bug | Player accelerates more slowly when air strafing when jump key is pressed. +moveup adds a vertical component to the wish direction. Then, the wish direction is normalized, and the vertical component is cleared to zero. The resulting vector length is less than one. The player doesn't accelerate as quickly because acceleration is directly proportional to the magnitude of the wish direction.To abuse: Hold the jump key as little as possible when jumping. |
Debatable bugs:
Horrible stairs | Not a glorious bug. Players cannot easily jump up stairs. The reason for this is that it is explicitly disallowed in PM_StepSlideMove . Jumping up stairs still doesn't work well after that code is removed because PM_ClipVelocity clips velocity from jumps off of stairs because PM_ClipVelocity clips velocity going both into and out of a plane. Still, it's better than Quake's stairs.To avoid: Jump as soon as you land on stairs, or if the steps are short, be sure to hit the steps with upward velocity to prevent a jump-killing step upward. |
Nonexistent crashland sounds | It is possible to fall from large heights and not make a sound by landing near, but not on, certain jumppads. |
Not bugs:
Rocket jump/ |
Not a bug. Just pure fun. To abuse: Make it boom below you. |