- if ( (int)ent->fields.server->flags & FL_PARTIALGROUND )
- ent->fields.server->flags = (int)ent->fields.server->flags & ~FL_PARTIALGROUND;
+ if ( (int)PRVM_serveredictfloat(ent, flags) & FL_PARTIALGROUND )
+ PRVM_serveredictfloat(ent, flags) = (int)PRVM_serveredictfloat(ent, flags) & ~FL_PARTIALGROUND;
+
+// gameplayfix: check if reached pretty steep plane and bail
+ if ( ! ( (int)PRVM_serveredictfloat(ent, flags) & (FL_SWIM | FL_FLY) ) && sv_gameplayfix_nostepmoveonsteepslopes.integer )
+ {
+ if (trace.plane.normal[ 2 ] < 0.5)
+ {
+ VectorCopy (oldorg, PRVM_serveredictvector(ent, origin));
+ return false;
+ }
+ }