diff --git a/_maps/RandomRuins/IceRuins/icemoon_surface_mining_site.dmm b/_maps/RandomRuins/IceRuins/icemoon_surface_mining_site.dmm index 89c4fb1709a..576f1593b41 100644 --- a/_maps/RandomRuins/IceRuins/icemoon_surface_mining_site.dmm +++ b/_maps/RandomRuins/IceRuins/icemoon_surface_mining_site.dmm @@ -16,7 +16,7 @@ /turf/open/floor/wood, /area/ruin/unpowered) "d" = ( -/turf/open/transparent/openspace/icemoon, +/turf/open/openspace/icemoon, /area/icemoon/surface/outdoors) "e" = ( /obj/item/clothing/suit/hooded/explorer, diff --git a/_maps/icebox.json b/_maps/icebox.json index 2c0150f1e94..f1da232b5d2 100644 --- a/_maps/icebox.json +++ b/_maps/icebox.json @@ -33,7 +33,7 @@ "Linkage": null, "Gravity": true, "Ice Ruins Underground": true, - "Baseturf": "/turf/open/transparent/openspace/icemoon" + "Baseturf": "/turf/open/openspace/icemoon" }, { "Down": -1, @@ -42,7 +42,7 @@ "Gravity": true, "Ice Ruins": true, "Weather_Snowstorm": true, - "Baseturf": "/turf/open/transparent/openspace/icemoon" + "Baseturf": "/turf/open/openspace/icemoon" } ], "minetype": "none", diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm index 2e4d72e7205..a592ee8f2b1 100644 --- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm +++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm @@ -931,7 +931,7 @@ /obj/machinery/light/small{ dir = 8 }, -/turf/open/transparent/openspace/icemoon, +/turf/open/openspace/icemoon, /area/security/execution/transfer) "acb" = ( /obj/effect/decal/cleanable/dirt, @@ -1128,7 +1128,7 @@ id = "executionflash"; pixel_x = 25 }, -/turf/open/transparent/openspace/icemoon, +/turf/open/openspace/icemoon, /area/security/execution/transfer) "acB" = ( /obj/effect/turf_decal/stripes/end{ @@ -7525,7 +7525,7 @@ /obj/structure/railing{ dir = 4 }, -/turf/open/transparent/openspace, +/turf/open/openspace, /area/quartermaster/storage) "aqv" = ( /obj/machinery/door/airlock/external{ @@ -7869,7 +7869,7 @@ /turf/open/floor/plasteel, /area/crew_quarters/fitness) "arm" = ( -/turf/open/transparent/openspace, +/turf/open/openspace, /area/quartermaster/storage) "arn" = ( /obj/structure/closet/athletic_mixed, @@ -8088,7 +8088,7 @@ /obj/structure/railing{ dir = 8 }, -/turf/open/transparent/openspace, +/turf/open/openspace, /area/quartermaster/storage) "arR" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer2, @@ -10863,7 +10863,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ dir = 4 }, -/turf/open/transparent/openspace, +/turf/open/openspace, /area/quartermaster/storage) "ayj" = ( /obj/structure/table, @@ -17619,7 +17619,7 @@ /obj/machinery/light{ dir = 8 }, -/turf/open/transparent/openspace, +/turf/open/openspace, /area/hydroponics) "aNO" = ( /obj/machinery/light/small{ @@ -18028,7 +18028,7 @@ /obj/machinery/camera{ c_tag = "Hydroponics North" }, -/turf/open/transparent/openspace, +/turf/open/openspace, /area/hydroponics) "aOS" = ( /obj/structure/disposalpipe/segment, @@ -18060,7 +18060,7 @@ /area/hallway/secondary/entry) "aOZ" = ( /obj/structure/lattice/catwalk, -/turf/open/transparent/openspace, +/turf/open/openspace, /area/hydroponics) "aPa" = ( /obj/structure/disposalpipe/segment{ @@ -18131,7 +18131,7 @@ /obj/machinery/light/small{ dir = 4 }, -/turf/open/transparent/openspace/icemoon, +/turf/open/openspace/icemoon, /area/security/execution/transfer) "aPk" = ( /turf/open/floor/plasteel/chapel{ @@ -20019,7 +20019,7 @@ /turf/open/floor/plasteel, /area/security/prison) "aUi" = ( -/turf/open/transparent/glass, +/turf/open/floor/glass, /area/hydroponics) "aUl" = ( /obj/structure/chair/office{ @@ -20135,7 +20135,7 @@ pixel_x = 24 }, /obj/structure/lattice/catwalk, -/turf/open/transparent/openspace, +/turf/open/openspace, /area/hydroponics) "aUA" = ( /obj/structure/table/wood, @@ -20620,16 +20620,16 @@ /obj/structure/railing{ dir = 4 }, -/turf/open/transparent/glass, +/turf/open/floor/glass, /area/hydroponics) "aVJ" = ( /obj/machinery/light{ dir = 8 }, -/turf/open/transparent/glass, +/turf/open/floor/glass, /area/hydroponics) "aVK" = ( -/turf/open/transparent/openspace, +/turf/open/openspace, /area/hydroponics) "aVL" = ( /obj/structure/disposalpipe/sorting/mail/flip{ @@ -20644,7 +20644,7 @@ dir = 4 }, /obj/structure/lattice/catwalk, -/turf/open/transparent/openspace, +/turf/open/openspace, /area/hydroponics) "aVN" = ( /obj/structure/disposalpipe/segment{ @@ -20957,7 +20957,7 @@ /turf/open/floor/plating, /area/maintenance/port) "aWA" = ( -/turf/open/transparent/openspace/icemoon, +/turf/open/openspace/icemoon, /area/security/execution/transfer) "aWC" = ( /obj/structure/cable, @@ -21387,7 +21387,7 @@ /obj/structure/railing{ dir = 8 }, -/turf/open/transparent/openspace, +/turf/open/openspace, /area/hydroponics) "aXp" = ( /obj/machinery/door/airlock{ @@ -21883,7 +21883,7 @@ "aYy" = ( /obj/structure/closet/l3closet/scientist, /obj/item/extinguisher, -/turf/open/transparent/glass/reinforced, +/turf/open/floor/glass/reinforced, /area/science/xenobiology) "aYz" = ( /obj/structure/disposalpipe/segment{ @@ -27285,7 +27285,7 @@ /turf/open/floor/plasteel, /area/security/checkpoint/medical) "blq" = ( -/turf/open/transparent/openspace/icemoon, +/turf/open/openspace/icemoon, /area/icemoon/surface/outdoors) "blr" = ( /obj/machinery/computer/card/minor/cmo, @@ -36533,7 +36533,7 @@ /obj/machinery/light{ dir = 8 }, -/turf/open/transparent/openspace, +/turf/open/openspace, /area/science/xenobiology) "bJI" = ( /obj/structure/disposalpipe/segment, @@ -36821,7 +36821,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/transparent/openspace/icemoon, +/turf/open/openspace/icemoon, /area/icemoon/surface/outdoors) "bKL" = ( /obj/structure/disposalpipe/segment{ @@ -36924,7 +36924,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, -/turf/open/transparent/glass/reinforced, +/turf/open/floor/glass/reinforced, /area/science/xenobiology) "bLc" = ( /obj/machinery/computer/security/telescreen{ @@ -38956,18 +38956,18 @@ /turf/open/floor/plasteel, /area/security/checkpoint/engineering) "bRT" = ( -/turf/open/transparent/glass/reinforced, +/turf/open/floor/glass/reinforced, /area/science/xenobiology) "bRY" = ( /obj/structure/lattice/catwalk, -/turf/open/transparent/openspace, +/turf/open/openspace, /area/science/xenobiology) "bSa" = ( /obj/structure/lattice/catwalk, /obj/structure/railing{ dir = 4 }, -/turf/open/transparent/openspace, +/turf/open/openspace, /area/science/xenobiology) "bSc" = ( /obj/structure/table, @@ -49407,7 +49407,7 @@ /obj/structure/railing{ dir = 10 }, -/turf/open/transparent/openspace, +/turf/open/openspace, /area/storage/mining) "ekN" = ( /obj/effect/turf_decal/tile/green, @@ -49570,7 +49570,7 @@ dir = 8; network = list("ss13","rd","xeno_pens") }, -/turf/open/transparent/openspace, +/turf/open/openspace, /area/science/xenobiology) "feO" = ( /obj/structure/disposalpipe/segment{ @@ -50217,7 +50217,7 @@ /obj/structure/railing{ dir = 6 }, -/turf/open/transparent/openspace, +/turf/open/openspace, /area/storage/mining) "gWd" = ( /obj/structure/cable, @@ -50292,7 +50292,7 @@ /area/crew_quarters/heads/captain) "heL" = ( /obj/structure/closet/secure_closet/cytology, -/turf/open/transparent/glass/reinforced, +/turf/open/floor/glass/reinforced, /area/science/xenobiology) "hgK" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer4{ @@ -50404,7 +50404,7 @@ /obj/machinery/light{ dir = 8 }, -/turf/open/transparent/openspace, +/turf/open/openspace, /area/science/xenobiology) "hFg" = ( /obj/machinery/door/airlock/external{ @@ -50536,7 +50536,7 @@ id = "publicElevator" }, /obj/machinery/light/floor, -/turf/open/transparent/openspace, +/turf/open/openspace, /area/storage/mining) "ibG" = ( /obj/machinery/nanite_programmer, @@ -50943,7 +50943,7 @@ /obj/structure/lattice/catwalk, /obj/structure/window/reinforced, /obj/structure/reagent_dispensers/watertank, -/turf/open/transparent/openspace, +/turf/open/openspace, /area/science/xenobiology) "jqx" = ( /obj/structure/railing/corner{ @@ -51687,7 +51687,7 @@ pixel_y = -24 }, /obj/machinery/light, -/turf/open/transparent/openspace, +/turf/open/openspace, /area/science/xenobiology) "kKU" = ( /obj/effect/decal/cleanable/cobweb, @@ -51993,7 +51993,7 @@ /obj/structure/extinguisher_cabinet{ pixel_x = -27 }, -/turf/open/transparent/glass/reinforced, +/turf/open/floor/glass/reinforced, /area/science/xenobiology) "lzt" = ( /obj/item/soap/deluxe, @@ -52164,7 +52164,7 @@ /obj/structure/railing{ dir = 9 }, -/turf/open/transparent/openspace, +/turf/open/openspace, /area/storage/mining) "lTQ" = ( /obj/vehicle/ridden/wheelchair{ @@ -52203,7 +52203,7 @@ dir = 1 }, /obj/structure/lattice/catwalk, -/turf/open/transparent/openspace, +/turf/open/openspace, /area/science/xenobiology) "lZG" = ( /obj/effect/turf_decal/tile/blue, @@ -52355,7 +52355,7 @@ /obj/machinery/light{ dir = 4 }, -/turf/open/transparent/openspace, +/turf/open/openspace, /area/hydroponics) "muM" = ( /obj/structure/cable, @@ -52691,11 +52691,11 @@ /turf/open/floor/plating, /area/maintenance/starboard/aft) "nka" = ( -/turf/open/transparent/openspace, +/turf/open/openspace, /area/science/xenobiology) "nlo" = ( /obj/structure/industrial_lift, -/turf/open/transparent/openspace, +/turf/open/openspace, /area/storage/mining) "nlN" = ( /obj/effect/turf_decal/tile/yellow, @@ -52941,7 +52941,7 @@ c_tag = "Xenobiology Lab Entrance"; network = list("ss13","rd") }, -/turf/open/transparent/openspace, +/turf/open/openspace, /area/science/xenobiology) "nLS" = ( /obj/machinery/door/airlock/research{ @@ -53261,7 +53261,7 @@ /obj/structure/railing{ dir = 5 }, -/turf/open/transparent/openspace, +/turf/open/openspace, /area/storage/mining) "oHU" = ( /obj/machinery/atmospherics/pipe/simple/general/visible{ @@ -53514,7 +53514,7 @@ /obj/machinery/light{ dir = 1 }, -/turf/open/transparent/openspace, +/turf/open/openspace, /area/science/xenobiology) "pnD" = ( /obj/structure/table/glass, @@ -53667,7 +53667,7 @@ dir = 8; network = list("ss13","rd","xeno_pens") }, -/turf/open/transparent/openspace, +/turf/open/openspace, /area/science/xenobiology) "pBF" = ( /obj/effect/turf_decal/trimline/blue/filled/line, @@ -55289,7 +55289,7 @@ pixel_y = -22 }, /obj/machinery/light, -/turf/open/transparent/openspace, +/turf/open/openspace, /area/science/xenobiology) "ulo" = ( /obj/effect/turf_decal/delivery, @@ -56299,7 +56299,7 @@ /obj/machinery/firealarm{ pixel_y = 24 }, -/turf/open/transparent/openspace, +/turf/open/openspace, /area/science/xenobiology) "wUs" = ( /obj/structure/closet/secure_closet/detective, @@ -56576,7 +56576,7 @@ /obj/structure/rack, /obj/item/storage/box/lights/tubes, /obj/item/crowbar/red, -/turf/open/transparent/glass/reinforced, +/turf/open/floor/glass/reinforced, /area/science/xenobiology) "xzN" = ( /obj/machinery/door/airlock/external{ @@ -56608,7 +56608,7 @@ /obj/machinery/light{ dir = 4 }, -/turf/open/transparent/openspace, +/turf/open/openspace, /area/science/xenobiology) "xCR" = ( /obj/effect/turf_decal/stripes/line{ @@ -56875,7 +56875,7 @@ /obj/structure/railing{ dir = 8 }, -/turf/open/transparent/openspace, +/turf/open/openspace, /area/science/xenobiology) "ydc" = ( /obj/structure/cable, @@ -56973,7 +56973,7 @@ dir = 4; network = list("ss13","rd","xeno_pens") }, -/turf/open/transparent/openspace, +/turf/open/openspace, /area/science/xenobiology) (1,1,1) = {" diff --git a/_maps/map_files/IceBoxStation/IcemoonUnderground_Above.dmm b/_maps/map_files/IceBoxStation/IcemoonUnderground_Above.dmm index 20e9e3b41f2..4181d3c810f 100644 --- a/_maps/map_files/IceBoxStation/IcemoonUnderground_Above.dmm +++ b/_maps/map_files/IceBoxStation/IcemoonUnderground_Above.dmm @@ -2699,7 +2699,7 @@ /turf/open/floor/plasteel, /area/mine/living_quarters) "kw" = ( -/turf/open/transparent/openspace/icemoon, +/turf/open/openspace/icemoon, /area/storage/mining) "ky" = ( /obj/machinery/light/small{ @@ -5107,7 +5107,7 @@ /turf/open/floor/plasteel/dark, /area/storage/mining) "Ma" = ( -/turf/open/transparent/openspace/icemoon, +/turf/open/openspace/icemoon, /area/icemoon/underground/explored) "Mk" = ( /obj/machinery/camera{ diff --git a/_maps/map_files/debug/multiz.dmm b/_maps/map_files/debug/multiz.dmm index e95584619da..fbd84a6bbcb 100644 --- a/_maps/map_files/debug/multiz.dmm +++ b/_maps/map_files/debug/multiz.dmm @@ -103,7 +103,7 @@ /turf/open/floor/plasteel, /area/engine/gravity_generator) "au" = ( -/turf/open/transparent/openspace, +/turf/open/openspace, /area/space) "av" = ( /obj/structure/stairs/north, @@ -1030,7 +1030,7 @@ }, /area/hallway/secondary/service) "eC" = ( -/turf/open/transparent/openspace, +/turf/open/openspace, /area/maintenance/department/bridge) "eD" = ( /obj/effect/turf_decal/stripes/asteroid/line{ @@ -1139,7 +1139,7 @@ /area/engine/storage) "fp" = ( /obj/structure/lattice/catwalk, -/turf/open/transparent/openspace, +/turf/open/openspace, /area/engine/storage) "gK" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ @@ -1198,7 +1198,7 @@ /turf/open/floor/plating, /area/construction) "iu" = ( -/turf/open/transparent/openspace, +/turf/open/openspace, /area/hallway/secondary/service) "iH" = ( /obj/effect/turf_decal/stripes/white/line, @@ -1294,7 +1294,7 @@ }, /area/hallway/secondary/service) "nx" = ( -/turf/open/transparent/openspace, +/turf/open/openspace, /area/space/nearstation) "nz" = ( /obj/machinery/light{ @@ -1346,10 +1346,10 @@ /obj/machinery/light{ dir = 4 }, -/turf/open/transparent/openspace, +/turf/open/openspace, /area/hallway/secondary/service) "qo" = ( -/turf/open/transparent/openspace, +/turf/open/openspace, /area/engine/storage) "qx" = ( /obj/structure/railing/corner{ @@ -1372,7 +1372,7 @@ /obj/machinery/light{ dir = 8 }, -/turf/open/transparent/openspace, +/turf/open/openspace, /area/engine/storage) "rN" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ @@ -1485,7 +1485,7 @@ /area/storage/primary) "xO" = ( /obj/structure/lattice, -/turf/open/transparent/openspace, +/turf/open/openspace, /area/engine/storage) "yl" = ( /obj/structure/cable, @@ -1562,7 +1562,7 @@ /area/construction) "Bk" = ( /obj/structure/grille, -/turf/open/transparent/openspace, +/turf/open/openspace, /area/space/nearstation) "Bm" = ( /obj/machinery/light{ @@ -1754,7 +1754,7 @@ "Ob" = ( /obj/structure/lattice, /obj/structure/grille, -/turf/open/transparent/openspace, +/turf/open/openspace, /area/space/nearstation) "Og" = ( /obj/machinery/airalarm/directional/north, diff --git a/_maps/multiz_debug.json b/_maps/multiz_debug.json index 49c9e80b578..eaa71b7e220 100644 --- a/_maps/multiz_debug.json +++ b/_maps/multiz_debug.json @@ -11,12 +11,12 @@ { "Up": 1, "Down": -1, - "Baseturf": "/turf/open/transparent/openspace", + "Baseturf": "/turf/open/openspace", "Linkage": "Cross" }, { "Down": -1, - "Baseturf": "/turf/open/transparent/openspace", + "Baseturf": "/turf/open/openspace", "Linkage": "Cross" } ] diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm index 88fbb5cf48c..57ba69c3f7b 100644 --- a/code/__DEFINES/dcs/signals.dm +++ b/code/__DEFINES/dcs/signals.dm @@ -229,7 +229,9 @@ #define COMSIG_TURF_CHANGE "turf_change" ///from base of atom/has_gravity(): (atom/asker, list/forced_gravities) #define COMSIG_TURF_HAS_GRAVITY "turf_has_gravity" -///from base of turf/New(): (turf/source, direction) +///from base of turf/multiz_turf_del(): (turf/source, direction) +#define COMSIG_TURF_MULTIZ_DEL "turf_multiz_del" +///from base of turf/multiz_turf_new: (turf/source, direction) #define COMSIG_TURF_MULTIZ_NEW "turf_multiz_new" // /atom/movable signals diff --git a/code/__DEFINES/icon_smoothing.dm b/code/__DEFINES/icon_smoothing.dm index 60ac94e3a5f..239d8a29db4 100644 --- a/code/__DEFINES/icon_smoothing.dm +++ b/code/__DEFINES/icon_smoothing.dm @@ -41,7 +41,7 @@ DEFINE_BITFIELD(smoothing_flags, list( #define SMOOTH_GROUP_TURF_OPEN S_TURF(0) ///turf/open #define SMOOTH_GROUP_TURF_CHASM S_TURF(1) ///turf/open/chasm, /turf/open/floor/fakepit #define SMOOTH_GROUP_FLOOR_LAVA S_TURF(2) ///turf/open/lava/smooth -#define SMOOTH_GROUP_FLOOR_TRANSPARENT_GLASS S_TURF(3) ///turf/open/transparent/glass +#define SMOOTH_GROUP_FLOOR_TRANSPARENT_GLASS S_TURF(3) ///turf/open/floor/glass #define SMOOTH_GROUP_OPEN_FLOOR S_TURF(4) ///turf/open/floor diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index c41fffdbed8..4949b497f88 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -14,7 +14,7 @@ GLOBAL_LIST_INIT(turfs_without_ground, typecacheof(list( /turf/open/chasm, /turf/open/lava, /turf/open/water, - /turf/open/transparent/openspace + /turf/open/openspace ))) #define isgroundlessturf(A) (is_type_in_typecache(A, GLOB.turfs_without_ground)) @@ -41,7 +41,7 @@ GLOBAL_LIST_INIT(turfs_without_ground, typecacheof(list( #define isplatingturf(A) (istype(A, /turf/open/floor/plating)) -#define istransparentturf(A) (istype(A, /turf/open/transparent)) +#define istransparentturf(A) (HAS_TRAIT(A, TURF_Z_TRANSPARENT_TRAIT)) //Mobs #define isliving(A) (istype(A, /mob/living)) diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index dc63214dbd1..3c21e1641e7 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -354,6 +354,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai #define HANDCUFFED_TRAIT "handcuffed" /// Trait granted by [/obj/item/warpwhistle] #define WARPWHISTLE_TRAIT "warpwhistle" +///Turf trait for when a turf is transparent +#define TURF_Z_TRANSPARENT_TRAIT "turf_z_transparent" /// Trait applied by by [/datum/component/soulstoned] #define SOULSTONE_TRAIT "soulstone" /// Trait applied to slimes by low temperature diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm index ef1a78e4cb0..6f287e047e4 100644 --- a/code/controllers/subsystem/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -102,7 +102,7 @@ SUBSYSTEM_DEF(mapping) // needs to be whitelisted for underground too so place_below ruins work seedRuins(ice_ruins, CONFIG_GET(number/icemoon_budget), list(/area/icemoon/surface/outdoors/unexplored, /area/icemoon/underground/unexplored), ice_ruins_templates) for (var/ice_z in ice_ruins) - spawn_rivers(ice_z, 4, /turf/open/transparent/openspace/icemoon, /area/icemoon/surface/outdoors/unexplored/rivers) + spawn_rivers(ice_z, 4, /turf/open/openspace/icemoon, /area/icemoon/surface/outdoors/unexplored/rivers) var/list/ice_ruins_underground = levels_by_trait(ZTRAIT_ICE_RUINS_UNDERGROUND) if (ice_ruins_underground.len) diff --git a/code/datums/elements/turf_transparency.dm b/code/datums/elements/turf_transparency.dm new file mode 100644 index 00000000000..5106be84745 --- /dev/null +++ b/code/datums/elements/turf_transparency.dm @@ -0,0 +1,75 @@ +/datum/element/turf_z_transparency + var/show_bottom_level = FALSE + +///This proc sets up the signals to handle updating viscontents when turfs above/below update. Handle plane and layer here too so that they don't cover other obs/turfs in Dream Maker +/datum/element/turf_z_transparency/Attach(datum/target, show_bottom_level = TRUE) + . = ..() + if(!isturf(target)) + return ELEMENT_INCOMPATIBLE + + var/turf/our_turf = target + + src.show_bottom_level = show_bottom_level + + our_turf.plane = OPENSPACE_PLANE + our_turf.layer = OPENSPACE_LAYER + + RegisterSignal(target, COMSIG_TURF_MULTIZ_DEL, .proc/on_multiz_turf_del) + RegisterSignal(target, COMSIG_TURF_MULTIZ_NEW, .proc/on_multiz_turf_new) + + ADD_TRAIT(our_turf, TURF_Z_TRANSPARENT_TRAIT, TURF_TRAIT) + + + update_multiz(our_turf, TRUE, TRUE) + +/datum/element/turf_z_transparency/Detach(datum/source, force) + . = ..() + var/turf/our_turf = source + our_turf.vis_contents.len = 0 + REMOVE_TRAIT(our_turf, TURF_Z_TRANSPARENT_TRAIT, TURF_TRAIT) + +///Updates the viscontents or underlays below this tile. +/datum/element/turf_z_transparency/proc/update_multiz(turf/our_turf, prune_on_fail = FALSE, init = FALSE) + var/turf/below_turf = our_turf.below() + if(!below_turf) + our_turf.vis_contents.len = 0 + if(!show_bottom_level(our_turf) && prune_on_fail) //If we cant show whats below, and we prune on fail, change the turf to plating as a fallback + our_turf.ChangeTurf(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) + return FALSE + if(init) + our_turf.vis_contents += below_turf + if(isclosedturf(our_turf)) //Show girders below closed turfs + var/mutable_appearance/girder_underlay = mutable_appearance('icons/obj/structures.dmi', "girder", layer = TURF_LAYER-0.01) + girder_underlay.appearance_flags = RESET_ALPHA | RESET_COLOR + our_turf.underlays += girder_underlay + var/mutable_appearance/plating_underlay = mutable_appearance('icons/turf/floors.dmi', "plating", layer = TURF_LAYER-0.02) + plating_underlay = RESET_ALPHA | RESET_COLOR + our_turf.underlays += plating_underlay + return TRUE + +/datum/element/turf_z_transparency/proc/on_multiz_turf_del(turf/our_turf, turf/T, dir) + SIGNAL_HANDLER + if(dir != DOWN) + return + update_multiz(our_turf) + +/datum/element/turf_z_transparency/proc/on_multiz_turf_new(turf/our_turf, turf/T, dir) + SIGNAL_HANDLER + if(dir != DOWN) + return + update_multiz(our_turf) + +///Called when there is no real turf below this turf +/datum/element/turf_z_transparency/proc/show_bottom_level(turf/our_turf) + if(!show_bottom_level) + return FALSE + var/turf/path = SSmapping.level_trait(our_turf.z, ZTRAIT_BASETURF) || /turf/open/space + if(!ispath(path)) + path = text2path(path) + if(!ispath(path)) + warning("Z-level [our_turf.z] has invalid baseturf '[SSmapping.level_trait(our_turf.z, ZTRAIT_BASETURF)]'") + path = /turf/open/space + var/mutable_appearance/underlay_appearance = mutable_appearance(initial(path.icon), initial(path.icon_state), layer = TURF_LAYER-0.02, plane = PLANE_SPACE) + underlay_appearance.appearance_flags = RESET_ALPHA | RESET_COLOR + our_turf.underlays += underlay_appearance + return TRUE diff --git a/code/datums/materials/_material.dm b/code/datums/materials/_material.dm index e40f451370a..321d5c8be31 100644 --- a/code/datums/materials/_material.dm +++ b/code/datums/materials/_material.dm @@ -58,6 +58,8 @@ Simple datum which is instanced once per type and is used for every object of sa ADD_KEEP_TOGETHER(source, MATERIAL_SOURCE(src)) source.filters += cached_texture_filter + if(alpha < 255) + source.opacity = FALSE if(material_flags & MATERIAL_ADD_PREFIX) source.name = "[name] [source.name]" @@ -107,13 +109,14 @@ Simple datum which is instanced once per type and is used for every object of sa /datum/material/proc/on_applied_turf(turf/T, amount, material_flags) if(isopenturf(T)) - if(!turf_sound_override) - return - var/turf/open/O = T - O.footstep = turf_sound_override - O.barefootstep = turf_sound_override - O.clawfootstep = turf_sound_override - O.heavyfootstep = turf_sound_override + if(turf_sound_override) + var/turf/open/O = T + O.footstep = turf_sound_override + O.barefootstep = turf_sound_override + O.clawfootstep = turf_sound_override + O.heavyfootstep = turf_sound_override + if(alpha < 255) + T.AddElement(/datum/element/turf_z_transparency, TRUE) return ///This proc is called when the material is removed from an object. @@ -144,7 +147,8 @@ Simple datum which is instanced once per type and is used for every object of sa o.throwforce = initial(o.throwforce) /datum/material/proc/on_removed_turf(turf/T, amount, material_flags) - return + if(alpha) + RemoveElement(/datum/element/turf_z_transparency, FALSE) /** * This proc is called when the mat is found in an item that's consumed by accident. see /obj/item/proc/on_accidental_consumption. diff --git a/code/game/atoms.dm b/code/game/atoms.dm index b216005beb4..a8242dd6767 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -436,10 +436,6 @@ M.forceMove(src) parts_list.Cut() -///Hook for multiz??? -/atom/proc/update_multiz(prune_on_fail = FALSE) - return FALSE - ///Take air from the passed in gas mixture datum /atom/proc/assume_air(datum/gas_mixture/giver) qdel(giver) @@ -1583,7 +1579,7 @@ if(isspaceturf(T)) // Turf never has gravity return 0 - if(istype(T, /turf/open/transparent/openspace)) //openspace in a space area doesn't get gravity + if(istype(T, /turf/open/openspace)) //openspace in a space area doesn't get gravity if(istype(get_area(T), /area/space)) return 0 diff --git a/code/game/objects/structures/aliens.dm b/code/game/objects/structures/aliens.dm index 92a40fca9eb..08324e53523 100644 --- a/code/game/objects/structures/aliens.dm +++ b/code/game/objects/structures/aliens.dm @@ -141,7 +141,7 @@ /turf/open/space, /turf/open/chasm, /turf/open/lava, - /turf/open/transparent/openspace)) + /turf/open/openspace)) set_base_icon() diff --git a/code/game/objects/structures/industrial_lift.dm b/code/game/objects/structures/industrial_lift.dm index adcc13270fd..f3cc64bab26 100644 --- a/code/game/objects/structures/industrial_lift.dm +++ b/code/game/objects/structures/industrial_lift.dm @@ -118,7 +118,7 @@ var/turf/T = get_step_multiz(lift_platform, check_dir) if(!T)//the edges of multi-z maps return FALSE - if(check_dir == DOWN && !istype(get_turf(lift_platform), /turf/open/transparent/openspace)) + if(check_dir == DOWN && !istype(get_turf(lift_platform), /turf/open/openspace)) return FALSE return TRUE diff --git a/code/game/objects/structures/stairs.dm b/code/game/objects/structures/stairs.dm index 5542e2d31c2..e737cdfc4b7 100644 --- a/code/game/objects/structures/stairs.dm +++ b/code/game/objects/structures/stairs.dm @@ -3,7 +3,7 @@ #define STAIR_TERMINATOR_YES 2 // dir determines the direction of travel to go upwards -// stairs require /turf/open/transparent/openspace as the tile above them to work, unless your stairs have 'force_open_above' set to TRUE +// stairs require /turf/open/openspace as the tile above them to work, unless your stairs have 'force_open_above' set to TRUE // multiple stair objects can be chained together; the Z level transition will happen on the final stair object in the chain /obj/structure/stairs @@ -12,7 +12,7 @@ icon_state = "stairs" anchored = TRUE - var/force_open_above = FALSE // replaces the turf above this stair obj with /turf/open/transparent/openspace + var/force_open_above = FALSE // replaces the turf above this stair obj with /turf/open/openspace var/terminator_mode = STAIR_TERMINATOR_AUTOMATIC var/turf/listeningTo @@ -107,22 +107,22 @@ /obj/structure/stairs/proc/build_signal_listener() if(listeningTo) UnregisterSignal(listeningTo, COMSIG_TURF_MULTIZ_NEW) - var/turf/open/transparent/openspace/T = get_step_multiz(get_turf(src), UP) + var/turf/open/openspace/T = get_step_multiz(get_turf(src), UP) RegisterSignal(T, COMSIG_TURF_MULTIZ_NEW, .proc/on_multiz_new) listeningTo = T /obj/structure/stairs/proc/force_open_above() - var/turf/open/transparent/openspace/T = get_step_multiz(get_turf(src), UP) + var/turf/open/openspace/T = get_step_multiz(get_turf(src), UP) if(T && !istype(T)) - T.ChangeTurf(/turf/open/transparent/openspace, flags = CHANGETURF_INHERIT_AIR) + T.ChangeTurf(/turf/open/openspace, flags = CHANGETURF_INHERIT_AIR) /obj/structure/stairs/proc/on_multiz_new(turf/source, dir) SIGNAL_HANDLER if(dir == UP) - var/turf/open/transparent/openspace/T = get_step_multiz(get_turf(src), UP) + var/turf/open/openspace/T = get_step_multiz(get_turf(src), UP) if(T && !istype(T)) - T.ChangeTurf(/turf/open/transparent/openspace, flags = CHANGETURF_INHERIT_AIR) + T.ChangeTurf(/turf/open/openspace, flags = CHANGETURF_INHERIT_AIR) /obj/structure/stairs/intercept_zImpact(atom/movable/AM, levels = 1) . = ..() diff --git a/code/game/sound.dm b/code/game/sound.dm index 8d88f6716e6..a817b0974a7 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -40,14 +40,14 @@ falloff_distance - Distance at which falloff begins. Sound is at peak volume (in if(!ignore_walls) //these sounds don't carry through walls listeners = listeners & hearers(maxdistance,turf_source) - if(istransparentturf(above_turf)) + if(above_turf && istransparentturf(above_turf)) listeners += hearers(maxdistance,above_turf) if(below_turf && istransparentturf(turf_source)) listeners += hearers(maxdistance,below_turf) else - if(istransparentturf(above_turf)) + if(above_turf && istransparentturf(above_turf)) listeners += SSmobs.clients_by_zlevel[above_turf.z] if(below_turf && istransparentturf(turf_source)) diff --git a/code/game/turfs/open/floor/plating/asteroid.dm b/code/game/turfs/open/floor/plating/asteroid.dm index c3244b60034..459045bf49f 100644 --- a/code/game/turfs/open/floor/plating/asteroid.dm +++ b/code/game/turfs/open/floor/plating/asteroid.dm @@ -199,7 +199,7 @@ GLOBAL_LIST_INIT(megafauna_spawn_list, list(/mob/living/simple_animal/hostile/me name = "snow" desc = "Looks cold." icon = 'icons/turf/snow.dmi' - baseturfs = /turf/open/transparent/openspace/icemoon + baseturfs = /turf/open/openspace/icemoon icon_state = "snow" icon_plating = "snow" initial_gas_mix = ICEMOON_DEFAULT_ATMOS @@ -466,7 +466,7 @@ GLOBAL_LIST_INIT(megafauna_spawn_list, list(/mob/living/simple_animal/hostile/me return FALSE /turf/open/floor/plating/asteroid/snow/icemoon - baseturfs = /turf/open/transparent/openspace/icemoon + baseturfs = /turf/open/openspace/icemoon initial_gas_mix = ICEMOON_DEFAULT_ATMOS slowdown = 0 diff --git a/code/game/turfs/open/glass.dm b/code/game/turfs/open/glass.dm new file mode 100644 index 00000000000..8a01e69300f --- /dev/null +++ b/code/game/turfs/open/glass.dm @@ -0,0 +1,31 @@ +/turf/open/floor/glass + name = "Glass floor" + desc = "Dont jump on it, or do, I'm not your mom." + icon = 'icons/turf/floors/glass.dmi' + icon_state = "glass-0" + base_icon_state = "glass" + baseturfs = /turf/open/openspace + intact = FALSE //this means wires go on top + smoothing_flags = SMOOTH_BITMASK + smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_FLOOR_TRANSPARENT_GLASS) + canSmoothWith = list(SMOOTH_GROUP_FLOOR_TRANSPARENT_GLASS) + footstep = FOOTSTEP_PLATING + barefootstep = FOOTSTEP_HARD_BAREFOOT + clawfootstep = FOOTSTEP_HARD_CLAW + heavyfootstep = FOOTSTEP_GENERIC_HEAVY + +/turf/open/floor/glass/Initialize() + icon_state = "" //Prevent the normal icon from appearing behind the smooth overlays + ..() + return INITIALIZE_HINT_LATELOAD + +/turf/open/floor/glass/LateInitialize() + . = ..() + AddElement(/datum/element/turf_z_transparency, TRUE) + +/turf/open/floor/glass/reinforced + name = "Reinforced glass floor" + desc = "Do jump on it, it can take it." + icon = 'icons/turf/floors/reinf_glass.dmi' + icon_state = "reinf_glass-0" + base_icon_state = "reinf_glass" diff --git a/code/game/turfs/open/openspace.dm b/code/game/turfs/open/openspace.dm index f26d100018a..2fe516f714e 100644 --- a/code/game/turfs/open/openspace.dm +++ b/code/game/turfs/open/openspace.dm @@ -13,44 +13,42 @@ GLOBAL_DATUM_INIT(openspace_backdrop_one_for_all, /atom/movable/openspace_backdr //I don't know why the others are aligned but I shall do the same. vis_flags = VIS_INHERIT_ID -/turf/open/transparent/openspace +/turf/open/openspace name = "open space" desc = "Watch your step!" icon_state = "transparent" - baseturfs = /turf/open/transparent/openspace + baseturfs = /turf/open/openspace CanAtmosPassVertical = ATMOS_PASS_YES + baseturfs = /turf/open/openspace + intact = FALSE //this means wires go on top //mouse_opacity = MOUSE_OPACITY_TRANSPARENT var/can_cover_up = TRUE var/can_build_on = TRUE -/turf/open/transparent/openspace/airless +/turf/open/openspace/airless initial_gas_mix = AIRLESS_ATMOS -/turf/open/transparent/openspace/debug/update_multiz() - ..() - return TRUE - -///No bottom level for openspace. -/turf/open/transparent/openspace/show_bottom_level() - return FALSE - -/turf/open/transparent/openspace/Initialize() // handle plane and layer here so that they don't cover other obs/turfs in Dream Maker +/turf/open/openspace/Initialize() // handle plane and layer here so that they don't cover other obs/turfs in Dream Maker . = ..() - vis_contents += GLOB.openspace_backdrop_one_for_all //Special grey square for projecting backdrop darkness filter on it. + return INITIALIZE_HINT_LATELOAD -/turf/open/transparent/openspace/can_have_cabling() +/turf/open/openspace/LateInitialize() + . = ..() + AddElement(/datum/element/turf_z_transparency, FALSE) + +/turf/open/openspace/can_have_cabling() if(locate(/obj/structure/lattice/catwalk, src)) return TRUE return FALSE -/turf/open/transparent/openspace/zAirIn() +/turf/open/openspace/zAirIn() return TRUE -/turf/open/transparent/openspace/zAirOut() +/turf/open/openspace/zAirOut() return TRUE -/turf/open/transparent/openspace/zPassIn(atom/movable/A, direction, turf/source) +/turf/open/openspace/zPassIn(atom/movable/A, direction, turf/source) if(direction == DOWN) for(var/obj/O in contents) if(O.obj_flags & BLOCK_Z_IN_DOWN) @@ -63,7 +61,7 @@ GLOBAL_DATUM_INIT(openspace_backdrop_one_for_all, /atom/movable/openspace_backdr return TRUE return FALSE -/turf/open/transparent/openspace/zPassOut(atom/movable/A, direction, turf/destination) +/turf/open/openspace/zPassOut(atom/movable/A, direction, turf/destination) if(A.anchored) return FALSE if(direction == DOWN) @@ -78,13 +76,13 @@ GLOBAL_DATUM_INIT(openspace_backdrop_one_for_all, /atom/movable/openspace_backdr return TRUE return FALSE -/turf/open/transparent/openspace/proc/CanCoverUp() +/turf/open/openspace/proc/CanCoverUp() return can_cover_up -/turf/open/transparent/openspace/proc/CanBuildHere() +/turf/open/openspace/proc/CanBuildHere() return can_build_on -/turf/open/transparent/openspace/attackby(obj/item/C, mob/user, params) +/turf/open/openspace/attackby(obj/item/C, mob/user, params) ..() if(!CanBuildHere()) return @@ -127,7 +125,7 @@ GLOBAL_DATUM_INIT(openspace_backdrop_one_for_all, /atom/movable/openspace_backdr else to_chat(user, "The plating is going to need some support! Place metal rods first.") -/turf/open/transparent/openspace/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) +/turf/open/openspace/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) if(!CanBuildHere()) return FALSE @@ -140,7 +138,7 @@ GLOBAL_DATUM_INIT(openspace_backdrop_one_for_all, /atom/movable/openspace_backdr return list("mode" = RCD_FLOORWALL, "delay" = 0, "cost" = 3) return FALSE -/turf/open/transparent/openspace/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, passed_mode) +/turf/open/openspace/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, passed_mode) switch(passed_mode) if(RCD_FLOORWALL) to_chat(user, "You build a floor.") @@ -148,13 +146,13 @@ GLOBAL_DATUM_INIT(openspace_backdrop_one_for_all, /atom/movable/openspace_backdr return TRUE return FALSE -/turf/open/transparent/openspace/icemoon +/turf/open/openspace/icemoon name = "ice chasm" - baseturfs = /turf/open/transparent/openspace/icemoon + baseturfs = /turf/open/openspace/icemoon initial_gas_mix = ICEMOON_DEFAULT_ATMOS var/replacement_turf = /turf/open/floor/plating/asteroid/snow/icemoon -/turf/open/transparent/openspace/icemoon/Initialize() +/turf/open/openspace/icemoon/Initialize() . = ..() var/turf/T = below() if(T.flags_1 & NO_RUINS_1) @@ -165,5 +163,5 @@ GLOBAL_DATUM_INIT(openspace_backdrop_one_for_all, /atom/movable/openspace_backdr var/turf/closed/mineral/M = T M.mineralAmt = 0 M.gets_drilled() - baseturfs = /turf/open/transparent/openspace/icemoon //This is to ensure that IF random turf generation produces a openturf, there won't be other turfs assigned other than openspace. + baseturfs = /turf/open/openspace/icemoon //This is to ensure that IF random turf generation produces a openturf, there won't be other turfs assigned other than openspace. diff --git a/code/game/turfs/open/space/space.dm b/code/game/turfs/open/space/space.dm index 356f382c75a..ebb0691aefd 100644 --- a/code/game/turfs/open/space/space.dm +++ b/code/game/turfs/open/space/space.dm @@ -63,6 +63,13 @@ if (opacity) directional_opacity = ALL_CARDINALS + var/turf/T = SSmapping.get_turf_above(src) + if(T) + T.multiz_turf_new(src, DOWN) + T = SSmapping.get_turf_below(src) + if(T) + T.multiz_turf_new(src, UP) + ComponentInitialize() return INITIALIZE_HINT_NORMAL diff --git a/code/game/turfs/open/transparent.dm b/code/game/turfs/open/transparent.dm deleted file mode 100644 index 28936789847..00000000000 --- a/code/game/turfs/open/transparent.dm +++ /dev/null @@ -1,77 +0,0 @@ -/turf/open/transparent - baseturfs = /turf/open/transparent/openspace - intact = FALSE //this means wires go on top - -/turf/open/transparent/Initialize() // handle plane and layer here so that they don't cover other obs/turfs in Dream Maker - . = ..() - plane = OPENSPACE_PLANE - layer = OPENSPACE_LAYER - - return INITIALIZE_HINT_LATELOAD - -/turf/open/transparent/LateInitialize() - update_multiz(TRUE, TRUE) - -/turf/open/transparent/Destroy() - vis_contents.len = 0 - return ..() - -/turf/open/transparent/update_multiz(prune_on_fail = FALSE, init = FALSE) - . = ..() - var/turf/T = below() - if(!T) - vis_contents.len = 0 - if(!show_bottom_level() && prune_on_fail) //If we cant show whats below, and we prune on fail, change the turf to plating as a fallback - ChangeTurf(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) - return FALSE - if(init) - vis_contents += T - return TRUE - -/turf/open/transparent/multiz_turf_del(turf/T, dir) - if(dir != DOWN) - return - update_multiz() - -/turf/open/transparent/multiz_turf_new(turf/T, dir) - if(dir != DOWN) - return - update_multiz() - -///Called when there is no real turf below this turf -/turf/open/transparent/proc/show_bottom_level() - var/turf/path = SSmapping.level_trait(z, ZTRAIT_BASETURF) || /turf/open/space - if(!ispath(path)) - path = text2path(path) - if(!ispath(path)) - warning("Z-level [z] has invalid baseturf '[SSmapping.level_trait(z, ZTRAIT_BASETURF)]'") - path = /turf/open/space - var/mutable_appearance/underlay_appearance = mutable_appearance(initial(path.icon), initial(path.icon_state), layer = TURF_LAYER, plane = PLANE_SPACE) - underlays += underlay_appearance - return TRUE - - -/turf/open/transparent/glass - name = "Glass floor" - desc = "Dont jump on it, or do, I'm not your mom." - icon = 'icons/turf/floors/glass.dmi' - icon_state = "glass-0" - base_icon_state = "glass" - smoothing_flags = SMOOTH_BITMASK - smoothing_groups = list(SMOOTH_GROUP_TURF_OPEN, SMOOTH_GROUP_FLOOR_TRANSPARENT_GLASS) - canSmoothWith = list(SMOOTH_GROUP_FLOOR_TRANSPARENT_GLASS) - footstep = FOOTSTEP_PLATING - barefootstep = FOOTSTEP_HARD_BAREFOOT - clawfootstep = FOOTSTEP_HARD_CLAW - heavyfootstep = FOOTSTEP_GENERIC_HEAVY - -/turf/open/transparent/glass/Initialize() - icon_state = "" //Prevent the normal icon from appearing behind the smooth overlays - return ..() - -/turf/open/transparent/glass/reinforced - name = "Reinforced glass floor" - desc = "Do jump on it, it can take it." - icon = 'icons/turf/floors/reinf_glass.dmi' - icon_state = "reinf_glass-0" - base_icon_state = "reinf_glass" diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index 22f0d5c739b..e0542aba3a3 100755 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -111,11 +111,10 @@ GLOBAL_LIST_EMPTY(station_turfs) var/turf/T = SSmapping.get_turf_above(src) if(T) T.multiz_turf_new(src, DOWN) - SEND_SIGNAL(T, COMSIG_TURF_MULTIZ_NEW, src, DOWN) T = SSmapping.get_turf_below(src) if(T) T.multiz_turf_new(src, UP) - SEND_SIGNAL(T, COMSIG_TURF_MULTIZ_NEW, src, UP) + if (opacity) directional_opacity = ALL_CARDINALS @@ -162,8 +161,10 @@ GLOBAL_LIST_EMPTY(station_turfs) user.Move_Pulled(src) /turf/proc/multiz_turf_del(turf/T, dir) + SEND_SIGNAL(src, COMSIG_TURF_MULTIZ_DEL, T, dir) /turf/proc/multiz_turf_new(turf/T, dir) + SEND_SIGNAL(src, COMSIG_TURF_MULTIZ_NEW, T, dir) ///returns if the turf has something dense inside it. if exclude_mobs is true, skips dense mobs like fat yoshi. /turf/proc/is_blocked_turf(exclude_mobs) diff --git a/code/modules/awaymissions/away_props.dm b/code/modules/awaymissions/away_props.dm index 795798774e2..a5978dca053 100644 --- a/code/modules/awaymissions/away_props.dm +++ b/code/modules/awaymissions/away_props.dm @@ -78,7 +78,7 @@ toggle() /obj/structure/pitgrate/proc/update_openspace() - var/turf/open/transparent/openspace/T = get_turf(src) + var/turf/open/openspace/T = get_turf(src) if(!istype(T)) return //Simple way to keep plane conflicts away, could probably be upgraded to something less nuclear with 513 diff --git a/code/modules/photography/camera/camera.dm b/code/modules/photography/camera/camera.dm index 13cc5454204..0baed060189 100644 --- a/code/modules/photography/camera/camera.dm +++ b/code/modules/photography/camera/camera.dm @@ -183,7 +183,7 @@ var/clone_area = SSmapping.RequestBlockReservation(size_x * 2 + 1, size_y * 2 + 1) for(var/turf/placeholder in block(locate(target_turf.x - size_x, target_turf.y - size_y, target_turf.z), locate(target_turf.x + size_x, target_turf.y + size_y, target_turf.z))) var/turf/T = placeholder - while(istype(T, /turf/open/transparent/openspace)) //Multi-z photography + while(istype(T, /turf/open/openspace)) //Multi-z photography T = SSmapping.get_turf_below(T) if(!T) break diff --git a/tgstation.dme b/tgstation.dme index 4540987a251..d6e9736b754 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -601,6 +601,7 @@ #include "code\datums\elements\squish.dm" #include "code\datums\elements\swabbable.dm" #include "code\datums\elements\tool_flash.dm" +#include "code\datums\elements\turf_transparency.dm" #include "code\datums\elements\undertile.dm" #include "code\datums\elements\update_icon_blocker.dm" #include "code\datums\elements\update_icon_updates_onmob.dm" @@ -1327,10 +1328,10 @@ #include "code\game\turfs\open\chasm.dm" #include "code\game\turfs\open\dirtystation.dm" #include "code\game\turfs\open\floor.dm" +#include "code\game\turfs\open\glass.dm" #include "code\game\turfs\open\lava.dm" #include "code\game\turfs\open\openspace.dm" #include "code\game\turfs\open\river.dm" -#include "code\game\turfs\open\transparent.dm" #include "code\game\turfs\open\water.dm" #include "code\game\turfs\open\floor\fancy_floor.dm" #include "code\game\turfs\open\floor\hull.dm"