- other.velocity = other.velocity + normalize(targ.origin - self.origin) * str * pushdeltatime;
- other.flags &= ~FL_ONGROUND;
+ if(self.spawnflags & 64)
+ {
+#ifdef SVQC
+ float addspeed = str - other.velocity * normalize(targ.origin - self.origin);
+ if (addspeed > 0)
+ {
+ float accelspeed = min(8 * pushdeltatime * str, addspeed);
+ other.velocity += accelspeed * normalize(targ.origin - self.origin);
+ }
+#elif defined(CSQC)
+ float addspeed = str - other.move_velocity * normalize(targ.origin - self.origin);
+ if (addspeed > 0)
+ {
+ float accelspeed = min(8 * pushdeltatime * str, addspeed);
+ other.move_velocity += accelspeed * normalize(targ.origin - self.origin);
+ }
+#endif
+ }
+ else
+#ifdef SVQC
+ other.velocity = other.velocity + normalize(targ.origin - self.origin) * str * pushdeltatime;
+#elif defined(CSQC)
+ other.move_velocity = other.move_velocity + normalize(targ.origin - self.origin) * str * pushdeltatime;
+#endif
+