This converts the machine and mob processes to the SMC. Additionally, it
adds the Atom subsystem, which handles all Initialize() calls in place
of the old gameticker. Due to incompatibility with our atmospherics
(FUCK OUR ATMOSPHERICS FOR FUCKING EVER JESUS CHRIST WHO THE FUCK MADE
THIS PIECE OF GODDAMN SHIT) atmospherics machines do not use
Initialize() as they should, instead opting for a custom atmos_init
proc that the air controller handles.
adds armor to many objects
re-adds the clockcult floor sprite (accidentally removed in another PR)
adds clockcult effects to the clockcult floor
adds clockcult grilles
adds var/broken to /obj/structure
adds unused resistance_flags var
moves burn_state and resistance_flags to flags.dm
more updates to attack code
updated obj_defense.dm procs
moves drying rack dropping wood out of Destroy()
transfers fingerprints to dropped machine frame, halves obj_integrity of non-disassembled deconstructed pipes and machine frames
renames take_damage() for organs to receive_damage()
renames Deconstruct() to deconstruct() for atmos objects
obj_integrity, max_integrity, integrity_failure vars moved to /obj level, obj_integrity = max_integrity on New()
`reset_perspective` from tgstation.
Also adds various support for remote viewing lenses - like cameras not
transmitting xray vision, among other things
Recommit because we're using different compiler versions
This commit changes how NanoUI's live data updating system works.
Previously, data for the template was directly gathered in the
ui_interact proc. Now, it is seperated into the proc `ui_data`.
To players, this does absolutely nothing.
To coders, this opens up the potential for a much more complicated and
fancy graphical updating system in the future, because the data is
available on-demand without ever having to call
nanomanager.try_update_ui.