SV_LinkEdict (pusher, false);
return;
default:
- Host_Error("SV_PushMove: unrecognized solid type %f\n", pusher->v->solid);
+ Con_DPrintf("SV_PushMove: unrecognized solid type %f\n", pusher->v->solid);
+ return;
}
index = (int) pusher->v->modelindex;
if (index < 1 || index >= MAX_MODELS)
- Host_Error("SV_PushMove: invalid modelindex %f\n", pusher->v->modelindex);
+ {
+ Con_DPrintf("SV_PushMove: invalid modelindex %f\n", pusher->v->modelindex);
+ return;
+ }
pushermodel = sv.models[index];
movetime2 = movetime;
if (ent->v->movetype != MOVETYPE_FLY)
{
- if (!oldonground && ent->v->waterlevel == 0 && !sv_jumpstep.integer)
+ if (!oldonground && ent->v->waterlevel == 0 && (!sv_jumpstep.integer || !sv_gameplayfix_stepwhilejumping.integer))
// don't stair up while jumping
return;
// if onground, return without moving
if ((int)ent->v->flags & FL_ONGROUND)
{
+ if (!sv_gameplayfix_noairborncorpse.integer)
+ return;
if (ent->v->groundentity == 0)
return;
// if ent was supported by a brush model on previous frame,
float d;
ClipVelocity (ent->v->velocity, trace.plane.normal, ent->v->velocity, 1.5);
// LordHavoc: fixed grenades not bouncing when fired down a slope
- d = DotProduct(trace.plane.normal, ent->v->velocity);
- if (trace.plane.normal[2] > 0.7 && fabs(d) < 60)
+ if (sv_gameplayfix_grenadebouncedownslopes.integer)
{
- ent->v->flags = (int)ent->v->flags | FL_ONGROUND;
- ent->v->groundentity = EDICT_TO_PROG(trace.ent);
- VectorClear (ent->v->velocity);
- VectorClear (ent->v->avelocity);
+ d = DotProduct(trace.plane.normal, ent->v->velocity);
+ if (trace.plane.normal[2] > 0.7 && fabs(d) < 60)
+ {
+ ent->v->flags = (int)ent->v->flags | FL_ONGROUND;
+ ent->v->groundentity = EDICT_TO_PROG(trace.ent);
+ VectorClear (ent->v->velocity);
+ VectorClear (ent->v->avelocity);
+ }
+ else
+ ent->v->flags = (int)ent->v->flags & ~FL_ONGROUND;
}
else
- ent->v->flags = (int)ent->v->flags & ~FL_ONGROUND;
+ {
+ if (trace.plane.normal[2] > 0.7 && ent->v->velocity[2] < 60)
+ {
+ ent->v->flags = (int)ent->v->flags | FL_ONGROUND;
+ ent->v->groundentity = EDICT_TO_PROG(trace.ent);
+ VectorClear (ent->v->velocity);
+ VectorClear (ent->v->avelocity);
+ }
+ else
+ ent->v->flags = (int)ent->v->flags & ~FL_ONGROUND;
+ }
}
else
{