num_moved = 0;
numcheckentities = SV_EntitiesInBox(mins, maxs, MAX_EDICTS, checkentities);
- for (e = 1;e < numcheckentities;e++)
+ for (e = 0;e < numcheckentities;e++)
{
check = checkentities[e];
if (check->v->movetype == MOVETYPE_PUSH
if (!SV_ClipMoveToEntity(pusher, check->v->origin, check->v->mins, check->v->maxs, check->v->origin).startsolid)
continue;
- if (forward[0] != 1) // quick way to check if any rotation is used
+ if (forward[0] != 1 || left[1] != 1) // quick way to check if any rotation is used
{
VectorSubtract (check->v->origin, pusher->v->origin, org);
org2[0] = DotProduct (org, forward);
SV_LinkEdict(ent, true);
// just hit ground
- if (hitsound && (int)ent->v->flags & FL_ONGROUND)
+ if (hitsound && (int)ent->v->flags & FL_ONGROUND && gamemode != GAME_NEXUIZ)
SV_StartSound(ent, 0, "demon/dland2.wav", 255, 1);
}
if (pr_global_struct->force_retouch)
SV_LinkEdict (ent, true); // force retouch even for stationary
- if (i >= 1 && i <= svs.maxclients && svs.clients[i-1].spawned)
+ if (i >= 1 && i <= svs.maxclients)
{
+ // don't do physics on disconnected clients, FrikBot relies on this
+ if (!svs.clients[i-1].spawned)
+ continue;
// connected slot
// call standard client pre-think
SV_CheckVelocity (ent);
break;
}
- if (i >= 1 && i <= svs.maxclients && svs.clients[i-1].spawned)
+ if (i >= 1 && i <= svs.maxclients)
{
SV_CheckVelocity (ent);