as Kaiochao explained it better than I could:
[3:52:27 PM] Kaiochao: you want a sub-section of a mob's view that isn't necessarily centered on the mob itself
[3:52:39 PM] Kaiochao: but takes into account the mob's sight
The alternatives to sight-based subset of this could involve creating multiple lists; like, bounds(thing) & view(thing); or some strenuous filtering based on their x/y. Either way, I feel this would be more efficient if native. Considering the procedures all accept a view string, I think expanding the syntax might make sense.
Maybe something like the syntax in the range_test_proposed, or something more like a subset of screen_loc where everything is relative to CENTER.
mob/verb
range_test_proposed()
var/off_x = !!(dir&EAST)
var/off_y = !!(dir&NORTH) // range could take "2:1x3:0"
var/_view = (dir & (EAST|WEST))? "2:[off_x]x3:[off_y] " : "3:[off_x]x2:[off_y]"
overlayTargets(range(src,_view))
range_test_current()
var/off_x = !!(dir&EAST)
var/off_y = !!(dir&NORTH)
var/_view = (dir & (EAST|WEST))? "2x3" : "3x2"
overlayTargets(range(locate(x+off_x, y+off_y, z),_view))
proc/overlayTargets(list/targets)
for(var/atom/x in world) if(x.icon)
if((x in targets)) x.overlays += /obj/over
else x.overlays = new