proc
IsoView(mob/centre,dist=world.view)
var/mob/temp=new
temp.see_invisible=50
temp.loc=centre.loc
temp.sight=centre.sight
spawn(1) del temp
return view(dist,temp)
Problem description:
Centre.sight is SEE_OBJS. Definitely. I've checked. Looping through the output of the IsoView proc, however, it does not seem to acknowledge temp.sight. Walls between me and a /obj prevent it from being included in the list.
Before you ask, yes, there's a reason I have to do it like this rather then just using centre.view. Any thoughts on why this is happening? Is mob.sight bugged? Does it only work for clients? Is it purely a visual effect rather then actually causing things to appear in view? Have I made a stupid mistake?
This is the code I'm using to check it:
Sight()
src << "sight: [sight]"
if(sight&BLIND) src << "BLIND is on"
if(sight&SEE_INFRA) src << "SEE_INFRA is on"
if(sight&SEE_SELF) src << "SEE_SELF is on"
if(sight&SEE_MOBS) src << "SEE_MOBS is on"
if(sight&SEE_OBJS) src << "SEE_OBJS is on"
if(sight&SEE_TURFS) src << "SEE_TURFS is on"
for(var/atom/a in IsoView(src)) src << a
Top of the output:
sight: 8
SEE_OBJS is on
Perhaps I misunderstood the problem, but doesn't temp need a physical location on the map before you can worry about any of its view-related methods?