Disclaimer: This is probably not a good idea.
Currently scroll bhops are not consistent because the game prevents you from jumping if you did a jump input in the previous tick.
This can be found here in the 0.8.7 code. It's worth noting that this code also exists in 1.6 as well.
This puts a maximum cap on scroll speed at 1 input per 2 ticks, and therefore perfect bhop chance is eventually capped at a hard 50%. Realistically, the perfect bhop rate is anywhere from 33% to 45%, see this kz thread for extra statistics.
My suggestion is to remove this piece of code for Climb/KZ. But two problems arise if this gets removed:
- This makes hyperscrolling possible, giving an advantage to players with specific mice.
- Scroll and space bar (or any key) gives the same
IN_JUMP
input, how do you distinguish between scroll and keyboard inputs?
Problem #1 is probably why this is a bad idea, even though hyperscrolling can be detectable. For problem #2, there is a way to differentiate button inputs and scroll inputs.
The game checks for 2 bits to determine if an input will be performed or not. And unlike keyboard inputs, one scroll step always result in two inputs on the same frame, not tick. This unique behavior will result in the only second bit being activated.
In contrast, holding spacebar (or any key) will result in one of these two scenarios:
- The first bit is activated.
- Both bits are activated.
Currently the game doesn't care about which one is activated, see here. So it is possible to differentiate scrolling from keyboard inputs, but the question is: should we?