This maybe is too late and probably you've figured out how to solve it, but anyway, if it's useful to anyone, I have recently figured out how to solve this. If you read with attention the godot documentation, the part of light shaders says:
If you want the lights to add together, add the light contribution to
+=, rather than overwriting it.
So, you have to sum up every single light, otherwise only the closest light is computed.
In other words, your problem is solved by simply assign the
DIFFUSE_LIGHTcomponent on your shader using
+=, like this:
DIFFUSE_LIGHT += ALBEDO * ATTENUATION * ramp ;
DIFFUSE_LIGHT = DIFFUSE_LIGHT + ALBEDO * ATTENUATION * ramp ;
This should work. It worked for me!
Have a nice day!