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"