Ported 'see-down' open spaces from Vore, who ported it from Eris
Ported talking and visible messages traveling upwards through open spaces
Tested, seems to work? Does not seem to break anything, maybe.
Maybe made a changelog.
Added catwalks and railings. Ported from Vorestation who ported them from Eris.
Note, catwalks can be placed on plating (as is seen on the vorestation map Tether) and is done so here as well. However it doesn't seem like it is possible to build said catwalks on plating. Did not bother to adjust this at this time. Something to sort in the future.
Adjusted SC station dmm to use both the railing and catwalks as well as a couple fixes for the floor tile adjustment in a earlier commit.
Things that are not on the turf floor should no longer drop through catwalks. YOU CAN NOW SAFELY BAG YOUR CRAP WITHOUT LOSING IT TO THE VOID THAT IS THE FLOOR DOWNSTAIRS.
* Remove remaining hard del()'s in our code.
* Replace deleted() and gcDestroyed with QDELETED macro.
* Fix some strange calls directly to Del() (capital D)
* Make Destroy() return qdel hints.
* Make a few of the Destroy()'s more comprehensive in cleaning up references.
* In edited Destroy() procs, converted to use qdel_null and qdel_null_list macros when possible for pretty code.
* Removed unused variable `sleevecard`
* Lattices no longer block all downward movement out of their turf, they only block downward falling out of their turf.
* Objects are once again pullable on catwalks (not 100% sure why they were not, but had to do with the falling code calling Move())
* Falling on top of a mob will no longer do an infinate loop of swapping places vertically.
* Don't infinately accumulate underlays!
* Ease up on the New() and Destroy(), make sure they are a top level object (loc is a turf)
* The open space darkness overlay is always the same, make it a global.
* New atom to hold a turf's decal overlays instead of the turf itself.
* Change floor_decal initialization to use it instead, and change other decal/overlay interaction procs to use it instead.
* Add floor decal initialization to master controller to do them in one fel swoop instead of nickel and diming.
* Stop area init from updating open space turfs; let the open space controller do it.
* Fix falling to check if movement actually succeeds before taking damage from falling.
* De-snowflakes how objects prevent you from falling out of their turf (catwalks and latticue)
* Improved the messaging and the way falling procs are called to make it more flexible and possible to hit things in a turf before the turf itself.
* Colored zpipes (like scrubbers or supply for example) would always lose color in game becuase atmospherics machinery sets color = null since most pipes use overlays and the icon cache. For better or worse, zpipes don't, they just use a normal icon_state, so they need color set.
* The proc obj/machinery/atmospherics/pipe/up/process was supposed to be obj/machinery/atmospherics/pipe/zpipe/process.
* Also changed hard coded integers to use constants while I was editing the file anyway.
* Instead of open spaces simply showing a static image of the turf below, it shows the turf, all objects, and even moving mobs.
* Controller updates the view to floor below fairly quickly; mobs update in real time.
* Open space can be examined to see how deep it is.
* Mobs are examinable even when on floor below, using a special "zshadow" mob.
* Changes from Eris: Heavily re-written to handle layering, special cases, rewrote controller etc. Shadow mobs don't break entering turfs, etc.
* Update to properly layer the objects from multiple "below" floors in the case of tripple-stacked or more z levels.
* Added constant defines for the planes in use.
* Added open_space.dmi with blank_open icon state for open space's darkening overlay.
* Now they won't try and bump you up to the next z on the "lower" step of the stairway. They also don't directly set `loc` Therefore pulling objects up/down actually works.
* Sets their layer so they won't appear above actual objects and mobs.
* Catwalks are an upgrade to lattice; instead of just a framework of wires its a mostly solid grid walkway.
* They are semi-transparent so you can see wires/pipes below them a bit.
* Smoothly auto-joining sprites to look proper.
* Constructed by upgrading lattice; like lattice it will stop you falling if build over an open space.
* Changes from Eris: Converted << to to_chat(), fix redraw on Destroy(), Fix color macros in text.
* Port of https://github.com/Baystation12/Baystation12/pull/16942
* Actually tell turfs when a thrown object hits them, and let them decide what to do about it!
* We do this by calling hitby(), which is how it already works for obj and mob, so this makes behavior consistent.
* This allows us to cleanly solve the problem of a thrown object landing on open space without falling.
* Global procs should start with /proc
* Use to_chat() macro
* Added utility to find all z-levels are connected (transitively adjacent) and utility to test if two levels are connected.