start[0] = stop[0] = (mins[0] + maxs[0])*0.5;
start[1] = stop[1] = (mins[1] + maxs[1])*0.5;
stop[2] = start[2] - 2*STEPSIZE;
- trace = SV_Move (start, vec3_origin, vec3_origin, stop, true, ent);
+ trace = SV_Move (start, vec3_origin, vec3_origin, stop, MOVE_NOMONSTERS, ent);
if (trace.fraction == 1.0)
return false;
start[0] = stop[0] = x ? maxs[0] : mins[0];
start[1] = stop[1] = y ? maxs[1] : mins[1];
- trace = SV_Move (start, vec3_origin, vec3_origin, stop, true, ent);
+ trace = SV_Move (start, vec3_origin, vec3_origin, stop, MOVE_NOMONSTERS, ent);
if (trace.fraction != 1.0 && trace.endpos[2] > bottom)
bottom = trace.endpos[2];
qboolean SV_movestep (edict_t *ent, vec3_t move, qboolean relink)
{
float dz;
- vec3_t oldorg, neworg, end;
+ vec3_t oldorg, neworg, end, traceendpos;
trace_t trace;
int i;
edict_t *enemy;
-// try the move
+// try the move
VectorCopy (ent->v.origin, oldorg);
VectorAdd (ent->v.origin, move, neworg);
if (dz < 30)
neworg[2] += 8;
}
- trace = SV_Move (ent->v.origin, ent->v.mins, ent->v.maxs, neworg, false, ent);
-
+ trace = SV_Move (ent->v.origin, ent->v.mins, ent->v.maxs, neworg, MOVE_NORMAL, ent);
+
if (trace.fraction == 1)
{
- if ( ((int)ent->v.flags & FL_SWIM) && SV_PointContents(trace.endpos) == CONTENTS_EMPTY )
+ VectorCopy(trace.endpos, traceendpos);
+ if ( ((int)ent->v.flags & FL_SWIM) && SV_PointContents(traceendpos) == CONTENTS_EMPTY )
return false; // swim monster left water
-
- VectorCopy (trace.endpos, ent->v.origin);
+
+ VectorCopy (traceendpos, ent->v.origin);
if (relink)
SV_LinkEdict (ent, true);
return true;
}
-
+
if (enemy == sv.edicts)
break;
}
-
+
return false;
}
VectorCopy (neworg, end);
end[2] -= STEPSIZE*2;
- trace = SV_Move (neworg, ent->v.mins, ent->v.maxs, end, false, ent);
+ trace = SV_Move (neworg, ent->v.mins, ent->v.maxs, end, MOVE_NORMAL, ent);
if (trace.allsolid)
return false;
if (trace.startsolid)
{
neworg[2] -= STEPSIZE;
- trace = SV_Move (neworg, ent->v.mins, ent->v.maxs, end, false, ent);
+ trace = SV_Move (neworg, ent->v.mins, ent->v.maxs, end, MOVE_NORMAL, ent);
if (trace.allsolid || trace.startsolid)
return false;
}
float d[3];
float tdir, olddir, turnaround;
- olddir = anglemod( (int)(actor->v.ideal_yaw/45)*45 );
- turnaround = anglemod(olddir - 180);
+ olddir = ANGLEMOD((int)(actor->v.ideal_yaw/45)*45);
+ turnaround = ANGLEMOD(olddir - 180);
deltax = enemy->v.origin[0] - actor->v.origin[0];
deltay = enemy->v.origin[1] - actor->v.origin[1];