ID:853376
 
Applies to:
Status: Open

Issue hasn't been assigned a status value.
Instead of getting a big list to determine if one object can be seen (considering opacity and sight stuff) by another object, how about a procedure that just returns true or false?

I suppose distance isn't a factor here. I can just use get_dist().

This is to beat (b in view(infinity?, a)).
viewers() will give you a much more reliable list than view() in this case.
In response to Nadrew
Oh, thanks. I knew of it, but never used it. Odd.
At present this probably wouldn't be easy to do, because the view routine basically has to build up a list of visible turfs just to work. Filling in the actual results of view() is something that could at least be skipped for this, saving some time, but it still wouldn't allow for infinite distance.
If opacity worked using ray-casting instead of the odd 45-degree thing, this would probably be more feasible; just cast a ray from a to b to determine if an opaque object is in the way. Internally, this would also be used to actually build view() lists, I think. Of course, I have no clue.