No, there isn't a special forum.
As for your question...
There is nothing in the system to prevent a shadow being cast from an entity from light which is behind a wall. I'm not a miracle worker. :-) I cannot just use a linepick or an entityvisible call in order to determine if a light can see an entity, because that might conflict with whatever someone is using pickmodes for, and to be quite frank, I never thought of doing it. There is no way for example to prevent a shadow from being cast though two walls, but yes, in theory you could stop a shaodw from being cast at all if the caster cannot see the light source.
I do not think it would be wise to implement such a thing in the shadow system as each game uses different methods to dtermine what is occluded and what is not, and that could be slow, or as I said, conflict with something else you want to do with linepicks.
However, if you wish to modify the system to do this check, then it should be fairly simple.
In the Update_Shadows function, you will see the following code near the start:
; Loop through all the pairs of light sources and shadow casters.
For ThisSet = Each Caster_Set
; The reason we group these into sets is so that a texture can be created and maintained for each set.
; We don't always update the texture every frame, so we need to preserve the pointer to it.
; We could probably perform the same operation with the meshes, however the only time a mesh be be able
; to be retained from frame to frame would be if the caster, light source, and recevier had all stayed at
; the same location in space between frames.
; Implementing this would remove the need for static shadows, but would create the need to be able to specify
; that certain light sources only affect certain caster/receiver pairs.
; It is also tempting because removing the need for static shadows would remove the need to have two copies
; of most of the below code, one for regular shadows and one for static shadows.
ThisLight.Light_Caster = ThisSet\Light
ThisCaster.Shadow_Caster = ThisSet\Caster
After this, ThisLight\Entity and ThisCaster\Entity hold the pointers to the entities that you are positioning in your world for each. Right after this code, you can just stick a check to see if they can see eachother with entityvisible, or linepick, whichever pleases you. If they can't see eachother then skip all the rest of the code in the loop and allow the loop to proceed to the next caster set.
You may get better performance however if you move this check a little bit further down in the code. Immediately after the above, there is a check to see if the distance between the light and caster is too great. This check is probably quite a bit faster than an entityvisible check, so you could put the entityvisible check AFTER the distance check so that you cull as many lights/caster pairs as possible just based on distance.