if (movetype == MOVETYPE_FLYMISSILE)
type = MOVE_MISSILE;
+ else if (movetype == MOVETYPE_SPECTATOR)
+ type = MOVE_WORLDONLY;
else if (solid == SOLID_TRIGGER || solid == SOLID_NOT)
- type = MOVE_WORLDONLY; // only clip against bmodels
+ type = MOVE_NOMONSTERS; // only clip against bmodels
else
type = MOVE_NORMAL;
-
- Con_Printf("wtfhax: %i \n", type);
*trace = SV_TraceBox(start, mins, maxs, end, type, ent, SV_GenericHitSuperContentsMask(ent));
if (trace->bmodelstartsolid && failonbmodelstartsolid)
// our trace will hit that thing too)
VectorSet(upmove, ent->fields.server->origin[0], ent->fields.server->origin[1], ent->fields.server->origin[2] + 1);
VectorSet(downmove, ent->fields.server->origin[0], ent->fields.server->origin[1], ent->fields.server->origin[2] - 1);
+
if (ent->fields.server->movetype == MOVETYPE_FLYMISSILE)
type = MOVE_MISSILE;
+ else if (ent->fields.server->movetype == MOVETYPE_SPECTATOR)
+ type = MOVE_WORLDONLY;
else if (ent->fields.server->solid == SOLID_TRIGGER || ent->fields.server->solid == SOLID_NOT)
- type = MOVE_WORLDONLY; // only clip against bmodels
+ type = MOVE_NOMONSTERS; // only clip against bmodels
else
type = MOVE_NORMAL;
+
trace = SV_TraceBox(upmove, ent->fields.server->mins, ent->fields.server->maxs, downmove, type, ent, SV_GenericHitSuperContentsMask(ent));
if(trace.fraction < 1 && trace.plane.normal[2] > 0.7)
clip |= 1; // but we HAVE found a floor
if (SV_RunThink (ent))
SV_WalkMove (ent);
break;
- case MOVETYPE_SPECTATOR:
case MOVETYPE_TOSS:
case MOVETYPE_BOUNCE:
case MOVETYPE_BOUNCEMISSILE:
case MOVETYPE_FLYMISSILE:
case MOVETYPE_FLY:
+ case MOVETYPE_SPECTATOR:
// regular thinking
if (SV_RunThink (ent))
SV_Physics_Toss (ent);
if (host_client->clmovement_inputtimeout <= 0)
SV_WalkMove (ent);
break;
- case MOVETYPE_SPECTATOR:
case MOVETYPE_TOSS:
case MOVETYPE_BOUNCE:
case MOVETYPE_BOUNCEMISSILE:
SV_Physics_Toss (ent);
break;
case MOVETYPE_FLY:
+ case MOVETYPE_SPECTATOR:
SV_RunThink (ent);
SV_WalkMove (ent);
break;