return;
if (GAMEPLAYFIX_UNSTICKPLAYERS(this))
- _Movetype_UnstickEntity(this);
+ _Movetype_CheckStuck(this);
bool applygravity = (!_Movetype_CheckWater(this) && this.move_movetype == MOVETYPE_WALK && !(this.flags & FL_WATERJUMP));
// if the move did not hit the ground at any point, we're not on ground
if (!(clip & 1))
UNSET_ONGROUND(this);
- else if(PHYS_WALLCLIP(this) && !this.groundentity && start_velocity.z < -200) // don't do landing time if we were just going down a slope
+ else if(PHYS_WALLCLIP(this) && !this.groundentity && (PHYS_WALLCLIP(this) == 2 || start_velocity.z < -200)) // don't do landing time if we were just going down a slope
this.pm_time = 0.25;
_Movetype_CheckVelocity(this);
// move up
vector upmove = '0 0 1' * PHYS_STEPHEIGHT(this);
- _Movetype_PushEntity(this, upmove, true);
- if(wasfreed(this))
- return;
- if(trace_startsolid)
+ if(!_Movetype_PushEntity(this, upmove, true, true))
{
// we got teleported when upstepping... must abort the move
return;
// move down
vector downmove = '0 0 0';
downmove.z = -PHYS_STEPHEIGHT(this) + start_velocity.z * dt;
- _Movetype_PushEntity(this, downmove, true);
- if(wasfreed(this))
- return;
-
- if(trace_startsolid)
+ if(!_Movetype_PushEntity(this, downmove, true, true))
{
// we got teleported when downstepping... must abort the move
return;
{
// this has been disabled so that you can't jump when you are stepping
// up while already jumping (also known as the Quake2 double jump bug)
+ // LordHavoc: disabled this check so you can walk on monsters/players
+ //if (PRVM_serveredictfloat(ent, solid) == SOLID_BSP)
+ if(GAMEPLAYFIX_STEPDOWN(this) == 2)
+ {
+ SET_ONGROUND(this);
+ this.groundentity = trace_ent;
+ }
}
else
{