ID:2772173
 
Applies to:DM Language
Status: Open

Issue hasn't been assigned a status value.
So the other day I was trying to do something that required me to have players see arbitrary objects (in this case, /image, /atom/movable, or /mutable_appearance added to overlays are all acceptable).

... only I realized that right now, there seems to be only a few, indirect methods of doing this
- having something not have TILE_BOUND and have it have such a large sprite it's visible to any player, anywhere, and at that point I can use images/practically anything. This is not preferable because spamming a ton of 480x480 sprites everywhere is an awful idea for a lot of reasons in said code.
- Use a screen object that parallaxes/syncs with the player's movement. Technically, it's their HUD - but this will 1. require one copy for every player that needs to see said things 2. be very stuttery/laggy and not to mention 3. being snowflakey as all hell
- Give the player SEE_TURFS, and have the selectively visible things be on a plane/image. Same with SEE_BLACKNESS, etc, sight flag stuff. This is very, very unpreferable because even though our lighting system will mask things the player shouldn't be able to see, we kind of really don't want to have view() procs get impacted by this, nor do we want every client to have the potential overhead of having to render everything off screen just for a small feature
- Lastly, sight_flags --> SEE_INFRA, aka the infra_luminosity system. This was the most promising because
1. I don't have to come to the forums and be a bother with this for some minor feature
2. the game I dev for, ss13, practically universally has ZERO use for infra_luminosity
3.. I can set every player's sight flags ALWAYS have SEE_INFRA, and then I can just have it be a code standard on the codebase that anything with infra_luminosity at all will be visible to all players. e.g., if you're doing selective visibility, besure to use either planes or images to conceal something.

Only I ran into the following problems:
1. see_infrared is useless to me because the whole point is "see thing through wall", which implies I need to use sight_flags, which makes a client always see something of a certain type
2. When I use sight flags = SEE_INFAR, it does... nothing??? If I have normal see_infrared I can see infrared stuff in luminosity = 0 turfs. If I have SEE_INFRA, it doesn't seem to impact anything at all, even though the other sight flags sort of imply sight flags is for "ignore walls in vision calculations for these categories"
3. Stuff with infra_luminosity illuminate the entire tile. Given the entire point of not using SEE_TURFs and applying images to turfs (which, is, snowflakey, terrible, and a bad idea for moving atoms where I want the image to attach to the atom instead of reattaching to the turf every step and causing stutter/no animation movements/overhead), this pretty much ruins that too.

So my question is:

1. Is a selective system of "you can always see these atoms through anything, no matter what, as long as they're on a turf/are a turf themselves and not inside anything (duh)" possible/feasible/likely
2. If not, at the very least, can infra_luminosity be made to not light up the entire turf instead of just the item, and can SEE_INFRA be fixed? I can do my system with just that + images, without the need for a selective atom visibility feature.