Commit Graph

78 Commits

Author SHA1 Message Date
Lohikar
5f8cc60210 Fix a lighting bug (#3879)
Fixes an issue where when the tile in front of a directional light changed opacity without the dir on the light changing, the directional light would not properly transition between omnidirectional and directional lights.
2017-11-19 11:22:51 +02:00
Lohikar
fc78e49b14 Fix AO being broken on ChangeTurf() (#3732)
Fix AO being broken on ChangeTurf()
2017-10-22 17:53:39 +03:00
Lohikar
754a219dec Misc tweaks (#3625)
changes:

Fastboot now turns off AO.
Removed some unused code from atmospheric machinery init.
Removed global list of all lighting overlays as it was unused.
Lighting now tracks the total number of light sources in the world.
Lighting now tracks the percentage of lighting updates done via. instant updates.
2017-10-14 19:35:01 +03:00
Lohikar
dedb657aeb move sunlight to compile-time option (#3636)
Turns out sunlight is a little memory hungry/slow. This disables sunlight via. compile-time define instead of removing it so it can be re-enabled if suitable later.
2017-10-14 19:25:11 +03:00
Lohikar
1c5fa4880c Fix a bug with opacity-based AO (#3613) 2017-10-14 11:33:36 +02:00
Lohikar
21e06212b6 General Lighting Improvements (#3482)
changes:

Z-lights can now shine both upwards and downwards.
Z-lights will now get less intense with each zlevel traversed.
Sunlight no longer has distance falloff.
Minor optimizations/simplification for directional lighting.
2017-09-23 00:54:11 +03:00
Lohikar
fe8d586b31 Ambient Occlusion (#3419)
Adds an implementation of Europa's wall ambient occlusion, extended to operate on openturfs as well.
2017-09-15 09:49:53 -05:00
Lohikar
f8bcaf4864 Lighting Performance Tweaks & Fixes (#3325)
changes:

SSlighting is now FIFO - lights are processed in the order they are received instead of by whatever one was queued most recently.
Instant lighting updates now check CURRENT_TICKLIMIT instead of ITL. ITL has been removed due to it no longer being used.
SSlighting will no longer double-process lighting datums that have already been processed by instant lighting.
Instant/Intelligent lighting updates can now be disabled via. compile-time define.
Sunlight should no longer shine indoors.
Directional lighting now properly updates on direction changes again.
/datum/light_source/novis has been renamed to /datum/light_source/sunlight.
More lighting microoptimizations.
Converted two storage lists to be lazy.
2017-08-28 01:06:17 +03:00
Lohikar
9dd650b7a9 Minor lighting performance tweaks (#3298)
changes:

Sunlight prebake now happens during MC Initialize instead of in the lobby.
Openturf no longer ticks in the lobby.
Openturf has been promoted to a normal SS, from SS_BACKGROUND.
Lighting no longer ticks in the lobby.
Inlined directional lighting's coordinate filter.
Directional lighting wedge caching now properly works with face-direction.
2017-08-20 14:08:25 +03:00
skull132
1aa305f1f9 Merge branch 'master' into development 2017-08-13 23:30:37 +03:00
Lohikar
1f8c6a0313 Force novis lights to use queued updates (#3275)
changes:

No-occlude lights such as those used by Sunlight are now always queued, eliminating a chance for them to be processed by the instant lighting system (causing lag).
2017-08-13 19:45:38 +03:00
Lohikar
fb73735ceb Minor Performance Tweaks (#3265)
changes:

/datum/wires no longer has an (init) proc.
SMES wires now use timers instead of spawn.
Cleanables' random_icon_states list is now lazy. (eliminates ~4000 lists from dirt)
/obj/effect can no longer be pushed around by conveyor belts.
Lighting overlays are now explicitly prevented from being moved by conveyor belts.
2017-08-11 22:57:57 +03:00
Lohikar
3167294ab1 Improved directional lighting fallback when facing opaque objects (#3210)
Facing an opaque object with a directional light source will now temporarily change the light to LIGHT_OMNI and halve the range instead of slightly tweaking where the light cone is drawn.
2017-08-02 19:54:10 +03:00
Lohikar
ff5cd35ef8 More Openturf Tweaks (#3137)
changes:

Openturfs now darken the lower level less (0.4 lighting multiplier vs. 0.25).
You can now examine human-types and other objects with special examine behavior through Z-levels. (OOs proxy examine())
Fixed a bug where shadower updates caused by LO updates caused visual inconsistencies.
2017-07-23 12:40:44 +03:00
skull132
b4a34d27f9 Since < 511 is no longer supported, I nuked all of the refs to it. (#3037)
With the introduction of PR #3023 , 510 and lower are no longer supported. So I removed all compile time defines that were meant to allow for its support and bumped the compiler error guard.
2017-07-15 17:03:24 +03:00
Lohikar
df2c571647 Convert a rogue area/New() to Initialize() (#3001) 2017-07-10 20:10:14 +03:00
Lohikar
2ee49b1b9e Fix parallax (#2983)
changes:

Parallax now actually moves properly on Move().
Parallax movement can now be toggled as a preference.
Merged all movable/Move() overrides for performance reasons.
2017-07-09 19:35:02 +03:00
Lohikar
dbc70d9f49 Openturf & Lighting Improvements (#2961)
changes:

Openturf now uses ~200 MB less memory when sunlight is enabled.
Openturf now handles recursive OO copy better.
Lighting objects now update their existing color list if they can instead of creating a new one each time.
The sun can no longer fall out of the sky.
Openturfs should be a little gentler on clients.
Openturf darkening factor can be more easily changed.
Reset-Openturfs no longer hangs SSgarbage.
2017-07-06 23:40:16 +03:00
Lohikar
f36c891fc3 Update lighting docs (#2952)
Updates the lighting docs to be a bit more up-to-date.
2017-07-06 23:36:51 +03:00
Lohikar
13ceff816c Inline some lighting stuff (#2929)
Inlines some really frequently called lighting procs, maybe will speed up lighting updates a bit.
2017-07-03 12:04:53 +03:00
Lohikar
9c010f92d1 isopenturf() macro, update_above improvements (#2931)
changes:

Added a isopenturf() macro, equivalent to istype(thing, /turf/simulated/open).
Converted most/all instances of istype(/turf/simulated/open) to isopenturf().
Made update_above()' aware of queue status & inlined a proc-call.
2017-07-03 12:04:18 +03:00
Lohikar
42f91d8117 Remove privacy poll & other tweaks/fixes (#2863)
changes:

Removed the privacy poll as it is unused.
Observing no longer creates a new mannequin, instead fetching one from SSmobs.
Observer ghosts now have a description again.
Converted new_player.dm to absolute pathing.
Fixed a bad init on holomaps.
Removed a sleep from light fixture Initialize().
Added a queue length stat to the MC panel for Icon Smoothing.
Halved time taken to create lighting overlay objects.
Species & body marking lists are now sorted alphabetically.
Commented out calls to lighting profiler to remove overhead of string interpolation in some procs.
Blood dries instantly if present during mapload instead of setting a timer.
2017-07-01 21:53:39 +03:00
Lohikar
27251ee9ee Remove the datum pool (#2873)
Removes the datum pool.

New-qdel is faster than pooling, and we didn't use it anyways.
2017-06-30 13:10:14 +03:00
Lohikar
bec02b1524 More lighting optimizations (#2789)
Mostly micro-optimizations on a few loops, but also includes more non-mem-hack optimizations for white light such as that created by the default sun.

Movable light updates are done on Move/forceMove now instead of Entered/Exited.

Removed pointless cache_u value.
2017-06-22 13:36:12 +03:00
Lohikar
05cceb7a1a Queued icon update tweaks (#2787)
changes:

Queued icon updates now update the atom's associated openspace overlay or openturf.
update_oo() renamed to update_above(), and moved up to /atom. Only meaningful on /turf (updates above openturf if present) and /atom/movable (updates associated OO if present).
Demoted SSfalling to a regular subsystem (1ds tickrate).
Increased SSlighting's tickrate from 2 ds to 1 ds.
2017-06-22 13:23:30 +03:00
Lohikar
90b6691c8f Sunlight (#2542)
Implements a configurable sun for a sunlight effect using the lighting engine.
Abuses Z-lights to illuminate Zs in a semi-realistic way.

Kinda slow at setting state, but state changes shouldn't lag & are rare.

Also adds the ability to create lights that ignore visibility when calculating range, causing them to shine through objects/walls.
2017-05-31 11:43:18 +03:00
skull132
a3ec0cf45d Better SQL prepared statements (#2474)
The system used to be of complexity O(n^2). Essentially two for loops running per every argument. Which ended up being surprisingly slow (there were instances where I saw the argument parser as using quite a lot of CPU time).

This replaces it with a more linear algorithm. It's somewhere near O(n) where n is the length of the unparsed query. Which is more stable and faaaster. This comes with two changes, however:

Parameters inside the query now have to be delimited from both sides with : (colons). The alternative to this would be to use something like $n or just assume that space marks the end of a marker. Only the former is workable, the latter would break a few queries already.
Arguments in the argument array no longer have to be prefixed by : (colons). So, while in the query you would write :thing:, you'd initialize the array of args as: list("thing" = somevar). It could be made to work without it, but eh, I think this is fine.
Argument validation is slightly weaker. What I mean by this is that with the old system, unused keys would result in an error. This is no longer a thing. Missing keys will still result in an error, however.
One more improvement: double delimiting removes an edge case where if key A partially covers key B, depending on the order, key A would mangle key B.
Updated and tested all queries that I could find. So this should be good.
2017-05-29 21:17:41 +03:00
Lohikar
c103c35a0e Fix some lighting bugs (#2383)
Fixes some issues with turf opacity not updating correctly & openspace overlays inheriting their opacity from copied objects.

Probably fixes #2375.
2017-05-22 01:57:39 +03:00
Lohikar
5b769df8fa Openturf tweaks & SSmob sleep detection (#2341)
changes:

Openturfs no longer copy the below turf's name.
Openturfs' desc now lists the name of the below turf instead of copying the below turf's desc.
SSmob now detects sleeping Life() procs.
2017-05-21 01:21:20 +03:00
Lohikar
58b953a3fc Cross-Z Lighting (#2281)
This PR edits the lighting engine's turf selection algorithm to also include turfs below openturf tiles, allowing for cross-Z lighting.

changes:

Lights now will now shine down Z-levels when they light up an open turf.
Commented-out openturf starlight pending making it not pummel SSlighting.
Openspace overlays are now only queued if they are not already in the queue.
Lighting overlays will now also update their associated openturf overlay on update if they have one.
Removed an old unused message from the asteroid generation subsystem.
2017-05-20 14:24:04 +03:00
Lohikar
fac6d7916c Lighting performance tweaks (#2200)
Port of tgstation/tgstation#26975.

Changes the lighting engine to apply lighting changes in one step using stored lum value differences instead of two steps (remove_lum, add_lum).

Seems to show a speedup in lighting updates as well as a reduction in server memory usage due to aggressive freeing of unneeded lists.

Lighting overlays also default to fullbright instead of fulldark so movable area transitions look less strange.
2017-05-15 22:25:13 +03:00
Lohikar
52a4f3a4e3 Shuttle refactor (#2171)
Rewrites the area movement code used by shuttles & elevators in an effort to make it faster, more extensible, and generally easier to read. Also fixes some bugs relating to lighting & moving areas, such as lighting overlays suddenly being teleported into space for absolutely no reason.

Fixes #2161.
Fixes #2166.
2017-05-05 10:16:53 +03:00
Lohikar
f6dc33a465 Newmap - SMC, Openturf, Arrivals Controller, and Mine Turf Improvements (#1958)
* Replace SSingulo with SScalamity; processing cleanup
- SScalamity now handles blobs as well as singularity-types.
- Processing subtypes have been simplified to not require a stop_processing definition.

* this is probably important

* Remove cascade disabling SSgarbage

* Fixed a bug where dust() did not qdel the target mob

* Misc fixes

* Fix decals surviving break-to-plating

* Subsystem flag tweaks

* Apparently subsystems are new'd before config is.

* Fix paper icons

* Speculative fix for insane lag

* Better machinery stat

* Make organs not use SSoverlay

* Misc bugfixes & tweaks

* Nightmode fixes

* Changelog for SMC

* Port /tg/'s improved MC crash handling

* Add some more SS Recover() procs

* supply_controller -> SScargo

* More New() -> Initialize()

* pAI and robot construction overlays

* Fix cargo unit tests

* Merge the DMM Suite's atom/New() into atoms_init

* Lighting pre-baking

* Lighting initialization logging

* Fix some bad SS init orders

* Fix SSlighting logging; rename Processes to MC

* Speculative fix for insane GC lag

* Prebaked openturf/icon_smooth & fix lighting prebake

* SS init status; SSatoms LATEQDEL

* Fix bug with MC init stat panel

* Fix parallax

* Misc

* Ignore SS_NO_DISPLAY during init

* apparently this is important

* REEEEEE

* Image GC fixes; broadcaster radio-new sanity

* RCON Cleanup

* Move pAI recruiter into subsystem

* Move global solars list into sun subsystem

* Make chickens not use a global

* Demote SSdisposals to SS_BACKGROUND; garbage-debug cleanup

* Speed up space init a little

* Fix bad timer flags on floor drying

* Subsystem panic-restart verb for mins

* Explosion speedup

* Minor subsystem & MC logging tweaks

* SSopenturf improvements

* Make pipenet actually initialize (whoops)

* Minor tweaks

* Implement lighting rounding

* comments are hard okay

* Minor lattice tweaks

* Fix some timer issues & better closet init

* Timer sanity

* Request console tweaks + Storage init sanity

* Minor SSmachiner RCON improvements

* Further reduce world-start timer count

* Standardize subsystem logging

* Garbage hard delete profiling from /tg/

* Timer hang detection & recovery

* Log machines that sleep in process() and fuck up SSmachinery

* Fix an issue with external airlocks sleeping in process()

* Failsafe logging

* Minor tweaks

* Revert "Request console tweaks + Storage init sanity"

This reverts commit 98d3579e35.

* Re-implement RC changes

* Fix SQL FT saving

* Fix SSmachinery sleep in disposals

* Minor SS tweaks

* Paper fixes

* Blood drying fixes

* Merge gameticker and SSticker

* Minor global list init cleanup

* Lagcheck biogenerator & bags

* Tweak SScargo init order; RIG Initialize()

* Caching tweaks

* Remove rogue comma

* Initialize fixes

* Lighting destroy cleanup

* Fix emagging airlocks

* Initial SSicon implementation

* Tweaks & Fixes

* Fire + Air alarm queued icon updates

* Overlays + Queued icon cleanup

* Runtime & background fixes

* Kill some meaningless set statements

* Kill some image qdels

* Bump up lighting rounding val

* Fix adv. scanner destroy runtimes

* Remove unneeded icon update limiting

* Move icon smoothing into helpers

* Show a warning if DM 510 compiles without memory leak hack enabled

* Re-organize subsystems & MC defines a little

* Airlock SFX

* Log of Changes

* Make SSicon_update disable itself when not doing anything

* Fix respawn verb runtime when used early in server-init

* Add more information to MC's stat_entry()

* Replace direct refernces to gcDestroyed with QDEL* macros

* plant_controller -> SSplants

* More plant tweaks

* Add more humor to changelog

* Move parallax globals into SSparallax

* Lighting responsiveness tweaks

* Fix parallax init order & better MC init panel stat

* Make mobs GC

* More overlays + Remove intercom spawn()

* SSfast_process; make pinpointers not use spawn-recursion to process
Also made the SM Cascade beach process with SSprocessing instead of a spawn loop.

* Update changelog

* Mob GC tweaks

* Del() cleanup

* Fix insomniac ZAS connection edges

* Minor pAI cleanup

* Convert more things to SSoverlay; fix duplicated overlay in field gens

* SM Bluespace turf tweaks

* Update SSgarbage debug globals list

* Human-type qdel tweaks

* Subsystem suspension; stat_entry improvements

* SQL Statistics cleanup

* Fix runtimes with ambrosia

* More disable() -> suspend(); fix nightmode again

* Human qdel fix; minor tweaks

* Update turbolift to work with StonedMC

* Make lifts use timers instead of a subsystem

* Make SSassets start earlier

* Convert the radio controller into a subsystem

* Fix some missing CHECK_TICKs in asteroid generation

* MC stat tweaks; make shouldnt_see a typecache

* Kill some redundant debug-controller entries

* radio_controller -> SSradio

* Better SSgarbage hard-del logging from /tg/ upstream

* Logging tweaks + GELF

* Misc client caching improvements

* Slime SSoverlay

* Oven icon fixes

* Implant fixes
- Death implants will no longer spam Common on death of user.
- Death implants should handle a deleted user better.

* Holder tweaks + Welding tool Initialize()

* Fix some bad subsystem logging

* Fix suit cooling units spawning without cells

* Starlight tweaks

* Gibber infinite gib fix

* More SSoverlay stuff

* Make crates use CUT_OVERLAY_IN

* Make SSarrivals suspend instead of disable

* Make openturf use split/phased tick checks

* Speculative fix for unwet timer runtimes

* Blood overlay tweaks/fixes

* Update crusher to play nice with SMC + SSoverlay

* Openturf improvements and fixes

* Minor turbolift tweaks

* Lighting performance improvements + ChangeTurf tweaks

* this is probably important

* Fix wall weld noises on changeturf

* More ChangeTurf tweaks

* Explosion tweaks

* Pre-game lobby tweaks

* Openturf tweaks

* Prevent admins from starting the game before init finishes

* Fix Travis

* Kill an unused var

* Fix ChangeTurf runtimes on openturfs

* Fixes

* Browser datum fixes, asset caching

* Update changelog

* Changelog

* Lobby tweaks

* Ticker tweaks; kill ticker var

* Further lobby tweaks

* Cascade tweaks

* air_master -> SSair

* Reduce overhead from radio autosay

* alarm_manager -> SSalarm

* bomb_processor -> SSexplosives

* corp_regs -> SSlaw

* ZAS overlay fixes

* Small wall icon optimization

* Fix effects master

* Assembly tweaks

* Megavend fixes

* Shuttle fixes

* Camera alert performance improvements

* Fix some world.log spam from lighting overlays

* Fix some Initialize() procs

* Openspace responsiveness tweaks

* Make HE pipes animate through openturfs

* Kill a spawn
2017-05-02 14:40:40 -04:00
Lohikar
f35680ba7a Fix cameras (#2091)
changes:

Cameras now use DVIEW instead of a temporary dummy mob to calculate visibility.
Cameras now render smooth lighting as old-style lights.
Lighting overlays are now a DMI instead of a PNG.
Fixes #1974.
2017-04-14 13:29:09 +03:00
Lohikar
3834fd9dec Darkness Fixes & Shell Tweaks (#2066)
changes:

ChangeTurf no longer breaks lighting when switching from statically lit turfs to dynamically lit turfs.
Human-types' is_noisy value is now updated on spawn; boots should now make footstep SFX without having to take them off and put them back on.
Fixed a logic error in is_noisy calculations which could have lead to false-negatives.
Shells can now wear socks & undershirts.
Fixed a bug where changing the dynamic lighting status on an area would attempt to build lighting overlays for the entire map.
Fixes #2027.
Fixes #1982.
2017-04-10 11:55:56 +03:00
Lohikar
e64074c5a7 Runtime fixes (#2017)
changes:

Added more QDELETED checks to organ processing.
Fixed some misc runtimes in lighting & sparks.
2017-03-30 22:06:24 +03:00
Lohikar
f3b0edf03e Fix smoke (#1996)
changes:

Smoke no longer leaves mysterious patches of darkness.
Smoke now uses client-side animations instead of while loops.
Fixes #1985.
2017-03-26 12:37:35 +03:00
Lohikar
27d328f6fb Lighting fixes (#1952)
Changes:

Fixes #1949.
Removes some pooling in favor of new-qdel.
Lighting startup spam is now correctly sent to R_DEBUG.
Fixes some spark runtimes.
2017-03-21 06:51:21 +02:00
Lohikar
fabd60a007 Horrible memleak hack (#1950)
Lighting memleak patch.
Only merge if memleak manifests.
Revert if server moves to 511+.
2017-03-21 00:05:16 +02:00
Lohikar
449919c905 Fixes (#1943)
changes:

Fixes PDA manifest.
Fixed some bad turfs on the outpost.
Very slightly sped up lighting initialization.
Fixed mine turfs bordering on space turfs having a bad edge.
Possibly sped up asteroid gen slightly.
2017-03-20 08:13:17 +02:00
Lohikar
9cb32e0653 Lighting fixes (#1886)
changes:

Fixes directional lights not obeying Face-Direction.
LIGHT_SEMI now works properly when a light is facing NORTH or SOUTH.
Fixes #1884
2017-03-06 00:30:34 +02:00
Lohikar
73c29bd5a7 Miscellaneous Fixes (#1868)
changes:

Engineering now actually gets engineering-type alert consoles instead of the non-functional base type.
Lighting is no longer broken by shuttles.
The ERT shuttle autoannouncer should no longer cause lighting runtimes.
Fixed some bad newlines in some character setup help texts.
Custom loadout tweaks now properly write to SQL.
Custom loadout is now saved as JSON.
Players are now shown a notice when the server was unable to load their custom loadout.
Drowsyness is now clamped to zero.
Added some new tips to the example.
Tweaked some tips' grammar.
Removed some tips that do not apply to our code base.
Probably fixes embraced vampire thralls not getting vampire verbs.
Fixes #1844.
Fixes #1835.
Probably fixes #1687.
Probably fixes #1824.
Fixes #1839
2017-03-05 15:14:28 +02:00
Lohikar
dceacd805b Directional lighting tweaks (#1833)
changes:

Flashlights now default to LIGHT_WIDE directional lighting.
Glowsticks, Lamps, Flares, and Slime Cores use LIGHT_OMNI.
Maglights use LIGHT_NARROW.
Heavy-duty flashlights use LIGHT_SEMI.
EVA suits default to LIGHT_WIDE.
Lanterns use LIGHT_OMNI, as well as now having a more appropriate light color.
Floodlights use LIGHT_WIDE, as well as having a more appropriate light color.
Synthetics default to LIGHT_WIDE. (including drones)
Added some predefined light_wedge values to the lighting defines file.
Fixed some bad angles that screwed up north/south lights in some cases.
2017-02-25 22:12:13 +02:00
Lohikar
8c6a2a84a0 Algorithmic Directional Lighting (#1726)
This is similar to #1722, but it uses a bit of math to allow explicit setting of the angle of light.
Pretty much complete, although no lights have been updated to use directional lighting.

Features:
Facing a wall with a directional light results in darkness - light is not emitted on own tile.
2017-02-24 21:43:22 +02:00
Lohikar
65e0f3de97 Simpler lighting process, bug fixes, & modular computer tweaks (#1809)
Fixes #1806
Fixes #1730
Fixes #1747
Partially addresses #1763
Addresses #1283
Fixes #1799
Fixes #1816
Fixes #1813
2017-02-24 20:24:31 +02:00
NanakoAC
aba694af6c Lighting Balance Pass (#1724)
Tweaks diona values on all lights, and range/power on a couple

Also adds a slightly dimmer sprite for tube light fixtures that they switch to during night mode. To reduce the incongruity from having a bright tube putting out very little light
2017-02-14 21:50:45 +02:00
Lohikar
bc441ab9d6 Miscellaneous Tweaks (#1720)
changes:

Refactored footstep sounds to use less operations & only calculate for human-types.
Improved the logging detail of the lighting profiler.
Fixed some shuttle corners that weren't correctly working with parallax space.
Converted get_turf() into a compiler macro.
Solars are now dynamically lit.
Silenced warning from lighting overlays pooling themselves when updated on a space tile.
Fixed a bug where securing a girder was instant when it was supposed to have a delay.
2017-02-07 18:46:39 +02:00
Lohikar
f544fe43b1 Processor-driven effects system & Minor Lighting Performance Tweaks (#1697)
Adds a new process-based effects system with the goal of reducing insane lag from sparks.
Currently only supports sparks, but should be easily extendable to other types of effects.
Also fixes a bug with airlocks where the light from bolts wasn't updating.

Refactors bears slightly to reduce duplicated code & pointless spark object creation and destruction.
Lighting profiler will now log /turf locations & names correctly.
Doors will no longer trigger way more visibility checks than they need to.
2017-02-04 03:34:13 +02:00
Lohikar
2165054918 Minor Lighting Process Improvements (#1682)
This PR reduces the tick rate of the lighting process from 1 ds interval to 10 ds interval, and removes some pointless updates from Destroy().

Also removes some left over defines from update_type and darkness overlays that I forgot to remove earlier.

Fixes #1683.
2017-02-01 19:48:28 +02:00
Lohikar
1d5287dad0 Adaptive lighting updates (#1679)
This PR simplifies the lighting update system (removes update_type) and instead makes the lighting system decide which update method to use based on server load.

Instant updates are used during low-load, scheduled during high.

Also removes: update_lights_now() (redundant), diff_light() (unused).
2017-01-31 00:37:56 +02:00