На скорость зараженных не влияет вода. В версусе на сурвов вроде тоже. Хотя замедление на некоторых картах всё таки есть, но я не нашёл квар, отвечающий за это. Скорее всего там через триггеры скорость меняют. Но есть интересный флаг передвижения FL_INWATER, который отвечает за нахождение игрока в воде. Манипулируя оффсетом m_flLaggedMovementValue (по умолчанию 1.0 - нормальная скорость) можно добиться нужного результата.
За скорость на склоне отвечает физика. Тут уже никакими кварами не отделаться. В этом случае нужно проверять вектор скорости и прибавлять к нему нужное значение, если надо.
Не советую юзать этот оффсет, при больших скоростях - игрок передвигается более лагованно. То есть анимация перемещения делает движение игрока более лагучим (как будто искусственно). Лучше использовать m_flVelocityModifier. Этот оффсет тоже использует значения с плавающей точкой. Стандарт 1.0, если хочется скорость выше, то ставить значение выше 1.0, а если меньше, то само собой, значение тоже меньше. Манипуляции производить тоже с ним есть смысл только в OnGameFrame или OnPlayerRunCmd. Так как скорость постоянно меняется игрой. Грубо говоря, если в какой-то функции единожды выставить значение 1.5, то практически сразу значение восстановится до 1.0. Но, с этим значением тоже стоит вести себя аккуратно. Потому что, если постоянно менять скорость принудительно без проверок, то, например, при ударе моба - игрок не замедлится. А должен был бы. Поэтому для всех этих случаев свои проверки желательно делать. Ну, к примеру, если моб ударил выжившего, то запустить таймер примерно на 1,5 секунды, по истечении которого скорость снова будет кастомно меняться.