aimvec* Poopbot::TargetRegion(int ax) { vec3_t vecEnd, up, right, forward, EntViewOrg,PredOrg, playerAngles; PredictTarget(ax,PredOrg); vector::iterator si, end; if (vPlayers[ax].getEnt()->curstate.usehull == 0) { si = AimVecsS.begin(); end = AimVecsS.end(); } else { si = AimVecsD.begin(); end = AimVecsD.end(); } if (vPlayers[ax].getEnt()->curstate.gaitsequence == 6) { si = AimVecsJ.begin(); end = AimVecsJ.end(); } playerAngles[0]=0; playerAngles[1]=vPlayers[ax].getEnt()->angles[1]; playerAngles[2]=0; gEngfuncs.pfnAngleVectors (playerAngles, forward, right, up); forward[2] = -forward[2]; for (;si!=end;++si) { vPlayers[ax].vVecSpot = gEngfuncs.GetEntityByIndex(ax)->origin + forward * si->f + up * si->h + right * si->r; if(PathFree(me.pmEyePos,vPlayers[ax].vVecSpot)) return &(*si); else if(cvar.autohead) { vPlayers[ax].vVecSpot = gEngfuncs.GetEntityByIndex(ax)->origin + (up * (si->h * cvar.ah_h)) + (forward * (si->f * cvar.ah_f)) + (right * (si->r * cvar.ah_r)); if(PathFree(me.pmEyePos,vPlayers[ax].vVecSpot )) return &(*si); else vPlayers[ax].vVecSpot = gEngfuncs.GetEntityByIndex(ax)->origin + (up * (si->h * cvar.ah_h )) + (forward * (si->f * (cvar.ah_f * -1))) + (right * (si->r * (cvar.ah_r * -1))); if(PathFree(me.pmEyePos,vPlayers[ax].vVecSpot )) return &(*si); else vPlayers[ax].vVecSpot = gEngfuncs.GetEntityByIndex(ax)->origin + (up * (si->h * cvar.ah_h/2)) + (forward * (si->f * cvar.ah_f/2)) + (right * (si->r * cvar.ah_r/2)); if(PathFree(me.pmEyePos,vPlayers[ax].vVecSpot )) return &(*si); else vPlayers[ax].vVecSpot = gEngfuncs.GetEntityByIndex(ax)->origin + (up * (si->h * cvar.ah_h/2)) + (forward * (si->f * (cvar.ah_f/2 * -1))) + (right * (si->r * (cvar.ah_r/2 * -1))); if(PathFree(me.pmEyePos,vPlayers[ax].vVecSpot )) return &(*si); } } return NULL; }