- traceline(view_origin, view_origin + max_shot_distance * view_forward, MOVE_NORMAL, NULL);
- float myalpha = (!csqcplayer.m_alpha) ? 1 : csqcplayer.m_alpha;
- if(trace_ent == csqcplayer)
- csqcplayer.alpha = min(autocvar_crosshair_chase_playeralpha, myalpha);
+ crosshair_chase_state = 2;
+ bool hit = false;
+ if (pointinsidebox(view_origin, csqcplayer.absmin, csqcplayer.absmax))
+ hit = true;
+ else
+ {
+ WarpZone_TraceLine(view_origin, view_origin + max_shot_distance * view_forward, MOVE_NORMAL, NULL);
+ if(trace_ent == csqcplayer)
+ hit = true;
+ }
+ float prev_alpha = csqcplayer.alpha;
+ if(hit)
+ csqcplayer.alpha = max(csqcplayer.alpha - frametime * 5, chase_playeralpha);