From 016fd2ac3ccfebb484fa09f530aef6bdca4a61d6 Mon Sep 17 00:00:00 2001 From: Detective Google <48196179+Detective-Google@users.noreply.github.com> Date: Sat, 15 Aug 2020 23:55:52 -0500 Subject: [PATCH] woo yeah yeah woo --- .../IceRuins/icemoon_surface_mining_site.dmm | 2 +- _maps/map_files/Snaxi/Snaxi.dmm | 8 +- _maps/map_files/debug/multiz.dmm | 16 ++-- _maps/multiz_debug.json | 2 +- _maps/snaxi.json | 2 +- code/__DEFINES/is_helpers.dm | 4 +- code/controllers/subsystem/mapping.dm | 2 +- code/game/objects/structures/stairs.dm | 14 +-- code/game/turfs/openspace/openspace.dm | 85 +++++++----------- code/game/turfs/openspace/transparent.dm | 73 +++++++++++++++ icons/turf/floors/glass.dmi | Bin 0 -> 3463 bytes icons/turf/floors/reinf_glass.dmi | Bin 0 -> 2961 bytes tgstation.dme | 1 + 13 files changed, 133 insertions(+), 76 deletions(-) create mode 100644 code/game/turfs/openspace/transparent.dm create mode 100644 icons/turf/floors/glass.dmi create mode 100644 icons/turf/floors/reinf_glass.dmi diff --git a/_maps/RandomRuins/IceRuins/icemoon_surface_mining_site.dmm b/_maps/RandomRuins/IceRuins/icemoon_surface_mining_site.dmm index 969acdd871..23abc4b731 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/openspace/icemoon, +/turf/open/transparent/openspace/icemoon, /area/icemoon/surface/outdoors) "e" = ( /obj/item/clothing/suit/hooded/explorer, diff --git a/_maps/map_files/Snaxi/Snaxi.dmm b/_maps/map_files/Snaxi/Snaxi.dmm index f7aca9baf2..aec051b9d0 100644 --- a/_maps/map_files/Snaxi/Snaxi.dmm +++ b/_maps/map_files/Snaxi/Snaxi.dmm @@ -5169,7 +5169,7 @@ /turf/open/floor/plasteel/dark, /area/hallway/secondary/exit/departure_lounge) "bum" = ( -/turf/open/openspace/icemoon, +/turf/open/transparent/openspace/icemoon, /area/icemoon/surface/outdoors) "buF" = ( /obj/machinery/light, @@ -12388,7 +12388,7 @@ /turf/open/floor/plasteel, /area/hallway/primary/port) "esY" = ( -/turf/open/openspace/icemoon, +/turf/open/transparent/openspace/icemoon, /area/engine/atmos) "ets" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ @@ -34891,7 +34891,7 @@ /turf/open/floor/plasteel, /area/engine/engineering) "rUd" = ( -/turf/open/openspace/icemoon, +/turf/open/transparent/openspace/icemoon, /area/science/mixing) "rUl" = ( /obj/structure/cable{ @@ -36338,7 +36338,7 @@ /turf/open/floor/plasteel/white, /area/medical/medbay/central) "sTq" = ( -/turf/open/openspace/icemoon, +/turf/open/transparent/openspace/icemoon, /area/engine/atmospherics_engine) "sTz" = ( /obj/effect/turf_decal/bot_white, diff --git a/_maps/map_files/debug/multiz.dmm b/_maps/map_files/debug/multiz.dmm index 4614829679..5a18682129 100644 --- a/_maps/map_files/debug/multiz.dmm +++ b/_maps/map_files/debug/multiz.dmm @@ -102,7 +102,7 @@ /turf/open/floor/plasteel, /area/engine/gravity_generator) "au" = ( -/turf/open/openspace, +/turf/open/transparent/openspace, /area/space) "av" = ( /obj/structure/stairs{ @@ -1407,7 +1407,7 @@ }, /area/hallway/secondary/service) "eC" = ( -/turf/open/openspace, +/turf/open/transparent/openspace, /area/maintenance/department/bridge) "eD" = ( /obj/effect/turf_decal/stripes/asteroid/line{ @@ -1542,7 +1542,7 @@ /turf/open/floor/plating, /area/space) "iu" = ( -/turf/open/openspace, +/turf/open/transparent/openspace, /area/hallway/secondary/service) "iK" = ( /turf/open/floor/plasteel{ @@ -1593,7 +1593,7 @@ }, /area/hallway/secondary/service) "nx" = ( -/turf/open/openspace, +/turf/open/transparent/openspace, /area/space/nearstation) "nz" = ( /obj/machinery/light{ @@ -1633,7 +1633,7 @@ /turf/open/floor/plating, /area/maintenance/department/bridge) "qo" = ( -/turf/open/openspace, +/turf/open/transparent/openspace, /area/engine/storage) "qR" = ( /obj/effect/turf_decal/stripes/white/line{ @@ -1646,7 +1646,7 @@ /obj/machinery/light{ dir = 8 }, -/turf/open/openspace, +/turf/open/transparent/openspace, /area/engine/storage) "sh" = ( /turf/open/floor/plasteel{ @@ -1746,7 +1746,7 @@ /area/construction) "Bk" = ( /obj/structure/grille, -/turf/open/openspace, +/turf/open/transparent/openspace, /area/space/nearstation) "Bm" = ( /obj/machinery/light{ @@ -1876,7 +1876,7 @@ "Ob" = ( /obj/structure/lattice, /obj/structure/grille, -/turf/open/openspace, +/turf/open/transparent/openspace, /area/space/nearstation) "Og" = ( /obj/machinery/airalarm/directional/north, diff --git a/_maps/multiz_debug.json b/_maps/multiz_debug.json index 7e39981e23..e916a77d1d 100644 --- a/_maps/multiz_debug.json +++ b/_maps/multiz_debug.json @@ -2,5 +2,5 @@ "map_name": "MultiZ Debug", "map_path": "map_files/debug", "map_file": "multiz.dmm", - "traits": [{"Up": 1}, {"Up": 1, "Down": -1}, {"Down": -1}] + "traits": [{"Up" : 1, "Linkage" : "Cross"}, {"Up" : 1, "Down" : -1, "Baseturf" : "/turf/open/transparent/openspace", "Linkage" : "Cross"}, {"Down" : -1, "Baseturf" : "/turf/open/transparent/openspace", "Linkage" : "Cross"}] } diff --git a/_maps/snaxi.json b/_maps/snaxi.json index cb1917b6f6..3fc8eba15d 100644 --- a/_maps/snaxi.json +++ b/_maps/snaxi.json @@ -33,7 +33,7 @@ "Linkage":null, "Gravity":true, "Ice Ruins Underground":true, - "Baseturf":"/turf/open/openspace/icemoon" + "Baseturf":"/turf/open/transparent/openspace/icemoon" }, { "Down":-1, diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index d66521d945..55be13834d 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -17,7 +17,7 @@ GLOBAL_LIST_INIT(turfs_without_ground, typecacheof(list( /turf/open/chasm, /turf/open/lava, /turf/open/water, - /turf/open/openspace + /turf/open/transparent/openspace ))) #define isgroundlessturf(A) (is_type_in_typecache(A, GLOB.turfs_without_ground)) @@ -44,6 +44,8 @@ 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)) + //Mobs #define isliving(A) (istype(A, /mob/living)) diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm index 97addfa131..617004646a 100644 --- a/code/controllers/subsystem/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -113,7 +113,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/openspace/icemoon, /area/icemoon/surface/outdoors/unexplored/rivers) + spawn_rivers(ice_z, 4, /turf/open/transparent/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/game/objects/structures/stairs.dm b/code/game/objects/structures/stairs.dm index d1a2a6f9f6..1358b2e296 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 (due to lack of sprites, currently only 1 and 2 make sense) -// stairs require /turf/open/openspace as the tile above them to work +// stairs require /turf/open/transparent/openspace as the tile above them to work // 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/openspace + var/force_open_above = FALSE // replaces the turf above this stair obj with /turf/open/transparent/openspace var/terminator_mode = STAIR_TERMINATOR_AUTOMATIC var/turf/listeningTo @@ -95,20 +95,20 @@ /obj/structure/stairs/proc/build_signal_listener() if(listeningTo) UnregisterSignal(listeningTo, COMSIG_TURF_MULTIZ_NEW) - var/turf/open/openspace/T = get_step_multiz(get_turf(src), UP) + var/turf/open/transparent/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/openspace/T = get_step_multiz(get_turf(src), UP) + var/turf/open/transparent/openspace/T = get_step_multiz(get_turf(src), UP) if(T && !istype(T)) - T.ChangeTurf(/turf/open/openspace, flags = CHANGETURF_INHERIT_AIR) + T.ChangeTurf(/turf/open/transparent/openspace, flags = CHANGETURF_INHERIT_AIR) /obj/structure/stairs/proc/on_multiz_new(turf/source, dir) if(dir == UP) - var/turf/open/openspace/T = get_step_multiz(get_turf(src), UP) + var/turf/open/transparent/openspace/T = get_step_multiz(get_turf(src), UP) if(T && !istype(T)) - T.ChangeTurf(/turf/open/openspace, flags = CHANGETURF_INHERIT_AIR) + T.ChangeTurf(/turf/open/transparent/openspace, flags = CHANGETURF_INHERIT_AIR) /obj/structure/stairs/intercept_zImpact(atom/movable/AM, levels = 1) . = ..() diff --git a/code/game/turfs/openspace/openspace.dm b/code/game/turfs/openspace/openspace.dm index 90fab29611..f03181ae3c 100644 --- a/code/game/turfs/openspace/openspace.dm +++ b/code/game/turfs/openspace/openspace.dm @@ -11,66 +11,47 @@ GLOBAL_DATUM_INIT(openspace_backdrop_one_for_all, /atom/movable/openspace_backdr mouse_opacity = MOUSE_OPACITY_TRANSPARENT layer = SPLASHSCREEN_LAYER -/turf/open/openspace +/turf/open/transparent/openspace name = "open space" desc = "Watch your step!" icon_state = "transparent" - baseturfs = /turf/open/openspace + baseturfs = /turf/open/transparent/openspace CanAtmosPassVertical = ATMOS_PASS_YES //mouse_opacity = MOUSE_OPACITY_TRANSPARENT var/can_cover_up = TRUE var/can_build_on = TRUE -/turf/open/openspace/debug/update_multiz() +/turf/open/transparent/openspace/airless + initial_gas_mix = AIRLESS_ATMOS + +/turf/open/transparent/openspace/debug/update_multiz() ..() return TRUE -/turf/open/openspace/Initialize() // handle plane and layer here so that they don't cover other obs/turfs in Dream Maker +///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 . = ..() - plane = OPENSPACE_PLANE - layer = OPENSPACE_LAYER + vis_contents += GLOB.openspace_backdrop_one_for_all //Special grey square for projecting backdrop darkness filter on it. - return INITIALIZE_HINT_LATELOAD -/turf/open/openspace/LateInitialize() - update_multiz(TRUE, TRUE) +/turf/open/transparent/openspace/can_have_cabling() + if(locate(/obj/structure/lattice/catwalk, src)) + return TRUE + return FALSE -/turf/open/openspace/Destroy() - vis_contents.len = 0 - return ..() - -/turf/open/openspace/update_multiz(prune_on_fail = FALSE, init = FALSE) - . = ..() - var/turf/T = below() - if(!T) - vis_contents.len = 0 - if(prune_on_fail) - ChangeTurf(/turf/open/floor/plating) - return FALSE - if(init) - vis_contents += T +/turf/open/transparent/openspace/zAirIn() return TRUE -/turf/open/openspace/multiz_turf_del(turf/T, dir) - if(dir != DOWN) - return - update_multiz() - -/turf/open/openspace/multiz_turf_new(turf/T, dir) - if(dir != DOWN) - return - update_multiz() - -/turf/open/openspace/zAirIn() +/turf/open/transparent/openspace/zAirOut() return TRUE -/turf/open/openspace/zAirOut() +/turf/open/transparent/openspace/zPassIn(atom/movable/A, direction, turf/source) return TRUE -/turf/open/openspace/zPassIn(atom/movable/A, direction, turf/source) - return TRUE - -/turf/open/openspace/zPassOut(atom/movable/A, direction, turf/destination) +/turf/open/transparent/openspace/zPassOut(atom/movable/A, direction, turf/destination) if(A.anchored) return FALSE for(var/obj/O in contents) @@ -78,13 +59,13 @@ GLOBAL_DATUM_INIT(openspace_backdrop_one_for_all, /atom/movable/openspace_backdr return FALSE return TRUE -/turf/open/openspace/proc/CanCoverUp() +/turf/open/transparent/openspace/proc/CanCoverUp() return can_cover_up -/turf/open/openspace/proc/CanBuildHere() +/turf/open/transparent/openspace/proc/CanBuildHere() return can_build_on -/turf/open/openspace/attackby(obj/item/C, mob/user, params) +/turf/open/transparent/openspace/attackby(obj/item/C, mob/user, params) ..() if(!CanBuildHere()) return @@ -98,14 +79,14 @@ GLOBAL_DATUM_INIT(openspace_backdrop_one_for_all, /atom/movable/openspace_backdr if(L) if(R.use(1)) to_chat(user, "You construct a catwalk.") - playsound(src, 'sound/weapons/genhit.ogg', 50, 1) + playsound(src, 'sound/weapons/genhit.ogg', 50, TRUE) new/obj/structure/lattice/catwalk(src) else to_chat(user, "You need two rods to build a catwalk!") return if(R.use(1)) to_chat(user, "You construct a lattice.") - playsound(src, 'sound/weapons/genhit.ogg', 50, 1) + playsound(src, 'sound/weapons/genhit.ogg', 50, TRUE) ReplaceWithLattice() else to_chat(user, "You need one rod to build a lattice.") @@ -118,7 +99,7 @@ GLOBAL_DATUM_INIT(openspace_backdrop_one_for_all, /atom/movable/openspace_backdr var/obj/item/stack/tile/plasteel/S = C if(S.use(1)) qdel(L) - playsound(src, 'sound/weapons/genhit.ogg', 50, 1) + playsound(src, 'sound/weapons/genhit.ogg', 50, TRUE) to_chat(user, "You build a floor.") PlaceOnTop(/turf/open/floor/plating, flags = CHANGETURF_INHERIT_AIR) else @@ -126,7 +107,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/openspace/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) +/turf/open/transparent/openspace/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd) if(!CanBuildHere()) return FALSE @@ -139,7 +120,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/openspace/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, passed_mode) +/turf/open/transparent/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.") @@ -147,12 +128,12 @@ GLOBAL_DATUM_INIT(openspace_backdrop_one_for_all, /atom/movable/openspace_backdr return TRUE return FALSE -/turf/open/openspace/icemoon +/turf/open/transparent/openspace/icemoon name = "ice chasm" - baseturfs = /turf/open/openspace/icemoon - can_cover_up = FALSE - can_build_on = FALSE + baseturfs = /turf/open/transparent/openspace/icemoon + can_cover_up = TRUE + can_build_on = TRUE initial_gas_mix = ICEMOON_DEFAULT_ATMOS -/turf/open/openspace/icemoon/can_zFall(atom/movable/A, levels = 1, turf/target) +/turf/open/transparent/openspace/icemoon/can_zFall(atom/moveable/A, levels = 1, turf/target) return TRUE diff --git a/code/game/turfs/openspace/transparent.dm b/code/game/turfs/openspace/transparent.dm new file mode 100644 index 0000000000..78ce820257 --- /dev/null +++ b/code/game/turfs/openspace/transparent.dm @@ -0,0 +1,73 @@ +/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 = "floor_glass" + smooth = SMOOTH_MORE + canSmoothWith = list(/turf/open/transparent/glass, /turf/open/transparent/glass/reinforced) + 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' \ No newline at end of file diff --git a/icons/turf/floors/glass.dmi b/icons/turf/floors/glass.dmi new file mode 100644 index 0000000000000000000000000000000000000000..adf6f57aaa3428df4c551214d41da17d798d1fa0 GIT binary patch literal 3463 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 RKKrZy!|P_K*GNqK{{V*fjT-;} literal 0 HcmV?d00001 diff --git a/icons/turf/floors/reinf_glass.dmi b/icons/turf/floors/reinf_glass.dmi new file mode 100644 index 0000000000000000000000000000000000000000..dda99cd07f83469db90cbd7fa3693c95153abc5e GIT binary patch literal 2961 zcmYjTc{~&DALqNWQes+?W3);{GG{TinDZOHO0M#=Cij`98O^5pvO>BfMwh`f%1A3oOGrq_*xR8_ zie=u1D9pDNsc6i-P9TJm7rqtRj|98rggYq*-I38Y zW)B?pwmqTY+3PC3;NbR77uCDpqjFRA5L;j%gWit@qc^Q0ok#5;3Aryo8=GQvdhW7Z zT5gU(wtlyBLEVA&)=1dn_emB=RKG~u_hO*#`kLrrcevY7je2N^+^9&`tk6qgox1dAiy>F`qUAk2Nc6|HV zsBM#)917g|(7D~YolY;BemIMbwKdA@_D7-2q8ZMu=k*f?7~SXf86IisL!ZmE zCJkslrjjgp=hn%6@x5~LNRv7=pPrQD*g3mtueLf!plC4AGy3CuNrW@S^ePQH&jCPV z=< zSla~waK%P>bweZ2z<*X>gNjse`L)A>BIi%PD6u4j+WwKs%5h0fdYI>Rv<)ACJR`4{j21M78tSJ&t4t`Qgw}4 zJs5UiD*@*T?(lR0pN;BhB?xdUD=Q}n3j2q7k(HOZ6G@9Bi($Q@@sSSC`+kNLhIOA+ z><2vp(42a&oM9s~Bl#QT;d?H*0K5VrHH1Erf_LiLezrTn3v2ZCZmEw<;3M8GPJt8_ znf#;&#PPsjvru@{jz% zf(vPBqbxlego{-jx)2UFdGm75^$DH{rX_4wM;BnPK<0pa3F0#;kZ1)>?GYxf7-NVw zI5SgF>dJzv(j)FcPR21e;vJK{Z+L<7NJ_J!z()eEeu(ME9%|y5D}!2 z(ofkhg{?b4*ZD_>MVAU~o}McdtDoE=Gzsxm%O)7)EG!vY+pp|EVaW;XF-TU@&dwCi zLXau37c=J}$O4|X;gYsm=e^b$&SOx%O12)SAd2B=7w|Hl$4+m;5~z!K4^p5*m!m_uS#DNSs*D-^8puh{|IQl8Wxe1LKRzZjIL2?&N%5Xt)L z!4O9-i3jpS_QA8hO0xHLk+OjEYV$nO@Nxs>HaXBZ`W3!htDW@EK zEM4l*JHEr47jH!%(`IXD*Rcdgd~WiLJXJNA}Z?iA@Vt^J`CCW zLz^!WTSuRf9^v6zsny2^S#bdQXtS>+Rg|4Z>d^=>m6}(jws%k3HG_`w;t0Z@fs@^upaLneK zAQ}4}v8NN`giFB9zqq6>rCrlU?9Cs2m5kf5y1{|Rt<0A%bXvQ}!9-^Q zCYS1KgLHQ79D8B0QigrEqIhh?v7A~&jvoo$S&Nn^Kd%X42Iv{GW zpyP^oqPKT3XYg>WAPm||`WLi?BNyPVIy3x+b0+FIbFW_r6#q`Vu$>?&R9a>a@8VCd z*cuNpYX5(v7B)~|BuNt*gMwO&*~}~nZ(??ZvYdHZqIj%J|DMUu9?%WA5-r{drTDLD z=Wo+aZ`t}skc9~*I;QHE>|KpLx*Xf)AxJGHy_H?fVtgVpU;UWLqu<-hSB9aHC$PQ0 z)dHDfe8th8=_78$8c8Er1t5Q;W6n8hn@yT${qbMP45^O1YC(kY@4gaqx zXfN#eyf`Yur&OrHC3(rZ?_6Hn#$;py`(o?m#UWA6UnMie30e;yJ5ntYu5s7h1Jp*n za|kiG3kqfyrUV9H$Eh2|4}hj|mt*XxB|fZmE+`11mvsyNSEYv>Q;jfNQ^!&hU&^gx zsBu{G%E|}$*n6yL*@!RRIGcH1|4AGThJF@jc#*p_X*;l#ghCZCi&ubs=I#;A(zkhX z-)H$*Wb%m=w{$o|TP=iEiLiigSF)Pb)pl<6iRW>i3>AMS#8%eH*3Pen5#vQqSD);j zN?1?2g{dq~r*9omqqQ9x@t@MF4~Iybr#=2wiD{wXi;cM+8SZP@V7jKh#~Ddq7U#l? z#^pUuj^tJ^sA=@O-M%!MhN(qY?x1S*j^Gu33~Muepx|-J+I(`{<$LD1?r40v=qzv8 z%*bm)tqde8>wG-gR=0g_Ms%n1gxsxjy>t|qRGc|55F+CeM7u{U*iorF65CpI4 z9H{x{pT7(W*^qbasS`af8l!Sal~)KF^)I?2d=Vy58@+mY2}^&f)ys8j>dMv!$)}}N z2__3dMc)rK8&SQCq4# zqANS&6xj(|rB2F%1E4ks$wD^8Q#aCD&yGaEYrVJjn^!&FWUDTU9aba>x#s|xl^PzwnnpRiGG%tXSK`O~bDaAjWu*1! z`0;uf#k;^z&d9Tasu$VwtOH5l5?108k(yNG^Ne|t6+d$NpkD!b~DK1GxQhXn%;lR7g}#(_Zn;wZAV3 z>uNNr=i@!g$t&#=%fYWCPne@WnGIAWm;1LMvF3T_vNQWa>toFJ**yii(ozRWyL@TA zLadfZ>Xo&7WB7##B-eJ*aS)Jo0sQwHdz6@(bD?Xv#_(1Wu2EB3DUF_<=FZj9U6nHA z=vVbx4Qk!EQl;}{yS1mE9e7aFE_=Hcth5gh6@-Q~4@PGA3e?UTRo7h&mGBk+u_f%S LolxbL=qvvPP-E|X literal 0 HcmV?d00001 diff --git a/tgstation.dme b/tgstation.dme index 4784fb3d32..7041220ddd 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1296,6 +1296,7 @@ #include "code\game\turfs\open.dm" #include "code\game\turfs\turf.dm" #include "code\game\turfs\openspace\openspace.dm" +#include "code\game\turfs\openspace\transparent.dm" #include "code\game\turfs\simulated\chasm.dm" #include "code\game\turfs\simulated\dirtystation.dm" #include "code\game\turfs\simulated\floor.dm"