Heres what I got:
area/outside
layer=99
luminosity = 0
proc/Weather() while(1)
for(var/area/A) A.icon=pick(null,'Rain.dmi','Snow.dmi') //and so on
sleep(2000)
world/New()
spawn Weather()
The spawn Weathers how ive been doing it reasently but it may have to change if its possible and also luminosity toggle added in to the loop.
...etc, then assign them respectively on the map. Changing any of the rest of your code is not strictly required. Also, you should be able to figure out how to change the area's luminosity like you're changing its icon on your own, I'm not spoonfeeding you that.