Greatly decreases the number of objects that need to be created (currently 3 event handlers in total vs basically 3 per datum)
The price is a slower lookup of listeners but on a per round basis it should still be much less than the current startup time penalty.
Moves the event manager processing into the process itself.
Ensures the last_object var is properly set in case of issues.
Also fixes a potential risk of the camera damage event looping forever.
Corrects a number of places where New() did not call ..(), and implements similar changes to attempt to ensure New()/initialize() complete running before qdel() runs.
Cuts down on the number of created items during server start.
Modified spawn_sync to include the spawning code, thus simplifying it's usage.
Modified spawn_sync to use actual time for failsafes.
A couple of sensibility tweaks for the wireless controller.
Cleaned up devices.dm to use new spawn_sync code.
Suggestions courtesy of @mwerezak
Added a changelog
Documentation, documentation, documentation.
Safety checks.
Reshuffled some code.
Modified wifi senders and receivers to both use var/id, instead of two different vars for basically the same purpose.
Added toggle variants for buttons, allowing them to "deactivate" connected devices.
Converted flashers and holosigns.
Fixes to keep in line with upstream.
- Better implementation of #10714
- This fix corrects the issue by merging pipenet process to machinery process to ensure order of execution doesn't change randomly. This shouldn't have any performance effect as pipenet process doesn't have much work anyway (not to be confused with air process that runs ZAS, this one only called process() on each pipenet). Screenshot of profiler (pipenet process highlighted, idle server with one player, engine set up) http://i.imgur.com/ecCg6rS.png
- Unlike previous fix, this does not come with various game-affecting side effects, players shouldn't see a change (except for the fact that odd fluctuations introduced by devmerge disappear). Previous fix buffed engine output as side effect, and caused one TEG to generate considerably more than second TEG, which caused TEGs to begin sparking despite overall output being below 1MW.
Moves atom/Destroy() into atom/movable/Destroy(). Is now a /tg/ copy-paste.
Means deleting turfs no longer wipes everything on that turf and that pulling is canceled.
qdel no longer willingly accepts lists.
Partially by request:
The inactive check process now respects client holder status and can be configured how long clients may remain inactive before being kicked.
- Machinery is now processed before powernets, using data from previous tick. This fixes various UI issues with power related machinery, such as, SMES always showing output load of 100%. Otherwise has no changing effect on gameplay.