Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define SHADOWLAYER TURF_LAYER+1.5
- // If defined, shading is applied as an overlay on areas.
- // If not defined, the area icon is changed.
- #define USESHADOWOVERLAYS
- var
- matmaxx = world.maxx + 1
- matmaxy = world.maxy + 1
- list/lightMatrix = new/list(matmaxx * matmaxy * world.maxz)
- worldlum[0]
- list/lightsources = list()
- #ifdef USESHADOWOVERLAYS
- list/shadowimages
- #endif
- useshadow=1
- const
- numshades = 8
- maxrad = 12
- shader=0
- shadeg=0
- shadeb=96
- maxdark = 224
- atomlightcache[9][0]
- _shadedAtoms[0]
- world
- New()
- .=..()
- sleep(1)
- PregenerateAtomShadows()
- worldlum.len = world.maxz
- proc
- PregenerateAtomShadows()
- set background = 1
- for(var/atom/movable/A in _shadedAtoms)
- if(!isturf(A.loc)) continue
- A.PregenerateShadows()
- A.UpdateShade()
- sleep(0)
- SetWorldLum(lum,z=1)
- lum = max(0,min(lum,numshades))
- var/dl = lum - worldlum[z]
- for(var/i = 1; i <= lightMatrix.len; ++i) lightMatrix[i] += dl
- worldlum[z] = lum
- for(var/turf/tile in world)
- tile.UpdateShade()
- for(var/atom/a in tile) a.UpdateShade()
- sleep(-1)
- RollWorldLum(lum,z=1,delay = 0.25)
- lum = max(0,min(lum,numshades))
- var/dl = lum - worldlum[z]
- for(var/i = 1; i <= lightMatrix.len; ++i) lightMatrix[i] += dl
- worldlum[z] = lum
- for(var/cz = 1; cz<= world.maxz; cz++)
- for(var/x = world.maxx; x>=1; x--)
- for(var/y = 1; y<=world.maxy; y++)
- var/turf/tile = locate(x,y,cz)
- tile.UpdateShade()
- for(var/atom/a in tile) a.UpdateShade()
- if(delay > 1)
- sleep(delay)
- else
- if(x%round(1/delay)==0)
- sleep(1)
- sleep(-1)
- SetLightLayers(z = world.maxz)
- var/req = matmaxx * matmaxy * z
- worldlum.len = world.maxz
- if(lightMatrix.len < req)
- var/lmlen=lightMatrix.len
- lightMatrix.Add(new/list(req - lmlen))
- for(var/i = lmlen + 1; i <= req; ++i)
- lightMatrix[i] = worldlum[z]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement