Turns transparency for turfs into an element, and gives it to datum materials. (#54250)

This commit is contained in:
Qustinnus
2020-11-03 15:05:54 -08:00
committed by GitHub
parent 88823780cf
commit 6424b6136e
27 changed files with 248 additions and 208 deletions
@@ -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,
+2 -2
View File
@@ -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",
+50 -50
View File
@@ -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,
@@ -17620,7 +17620,7 @@
/obj/machinery/light{
dir = 8
},
/turf/open/transparent/openspace,
/turf/open/openspace,
/area/hydroponics)
"aNO" = (
/obj/machinery/light/small{
@@ -18029,7 +18029,7 @@
/obj/machinery/camera{
c_tag = "Hydroponics North"
},
/turf/open/transparent/openspace,
/turf/open/openspace,
/area/hydroponics)
"aOS" = (
/obj/structure/disposalpipe/segment,
@@ -18061,7 +18061,7 @@
/area/hallway/secondary/entry)
"aOZ" = (
/obj/structure/lattice/catwalk,
/turf/open/transparent/openspace,
/turf/open/openspace,
/area/hydroponics)
"aPa" = (
/obj/structure/disposalpipe/segment{
@@ -18132,7 +18132,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{
@@ -20003,7 +20003,7 @@
/turf/open/floor/plasteel,
/area/security/prison)
"aUi" = (
/turf/open/transparent/glass,
/turf/open/floor/glass,
/area/hydroponics)
"aUl" = (
/obj/structure/chair/office{
@@ -20119,7 +20119,7 @@
pixel_x = 24
},
/obj/structure/lattice/catwalk,
/turf/open/transparent/openspace,
/turf/open/openspace,
/area/hydroponics)
"aUA" = (
/obj/structure/table/wood,
@@ -20604,16 +20604,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{
@@ -20628,7 +20628,7 @@
dir = 4
},
/obj/structure/lattice/catwalk,
/turf/open/transparent/openspace,
/turf/open/openspace,
/area/hydroponics)
"aVN" = (
/obj/structure/disposalpipe/segment{
@@ -20941,7 +20941,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,
@@ -21371,7 +21371,7 @@
/obj/structure/railing{
dir = 8
},
/turf/open/transparent/openspace,
/turf/open/openspace,
/area/hydroponics)
"aXp" = (
/obj/machinery/door/airlock{
@@ -21867,7 +21867,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{
@@ -27269,7 +27269,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,
@@ -36517,7 +36517,7 @@
/obj/machinery/light{
dir = 8
},
/turf/open/transparent/openspace,
/turf/open/openspace,
/area/science/xenobiology)
"bJI" = (
/obj/structure/disposalpipe/segment,
@@ -36805,7 +36805,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{
@@ -36908,7 +36908,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{
@@ -38940,18 +38940,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,
@@ -49391,7 +49391,7 @@
/obj/structure/railing{
dir = 10
},
/turf/open/transparent/openspace,
/turf/open/openspace,
/area/storage/mining)
"ekN" = (
/obj/effect/turf_decal/tile/green,
@@ -49554,7 +49554,7 @@
dir = 8;
network = list("ss13","rd","xeno_pens")
},
/turf/open/transparent/openspace,
/turf/open/openspace,
/area/science/xenobiology)
"feO" = (
/obj/structure/disposalpipe/segment{
@@ -50201,7 +50201,7 @@
/obj/structure/railing{
dir = 6
},
/turf/open/transparent/openspace,
/turf/open/openspace,
/area/storage/mining)
"gWd" = (
/obj/structure/cable,
@@ -50276,7 +50276,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{
@@ -50388,7 +50388,7 @@
/obj/machinery/light{
dir = 8
},
/turf/open/transparent/openspace,
/turf/open/openspace,
/area/science/xenobiology)
"hFg" = (
/obj/machinery/door/airlock/external{
@@ -50520,7 +50520,7 @@
id = "publicElevator"
},
/obj/machinery/light/floor,
/turf/open/transparent/openspace,
/turf/open/openspace,
/area/storage/mining)
"ibG" = (
/obj/machinery/nanite_programmer,
@@ -50927,7 +50927,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{
@@ -51671,7 +51671,7 @@
pixel_y = -24
},
/obj/machinery/light,
/turf/open/transparent/openspace,
/turf/open/openspace,
/area/science/xenobiology)
"kKU" = (
/obj/effect/decal/cleanable/cobweb,
@@ -51977,7 +51977,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,
@@ -52148,7 +52148,7 @@
/obj/structure/railing{
dir = 9
},
/turf/open/transparent/openspace,
/turf/open/openspace,
/area/storage/mining)
"lTQ" = (
/obj/vehicle/ridden/wheelchair{
@@ -52187,7 +52187,7 @@
dir = 1
},
/obj/structure/lattice/catwalk,
/turf/open/transparent/openspace,
/turf/open/openspace,
/area/science/xenobiology)
"lZG" = (
/obj/effect/turf_decal/tile/blue,
@@ -52339,7 +52339,7 @@
/obj/machinery/light{
dir = 4
},
/turf/open/transparent/openspace,
/turf/open/openspace,
/area/hydroponics)
"muM" = (
/obj/structure/cable,
@@ -52675,11 +52675,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,
@@ -52925,7 +52925,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{
@@ -53245,7 +53245,7 @@
/obj/structure/railing{
dir = 5
},
/turf/open/transparent/openspace,
/turf/open/openspace,
/area/storage/mining)
"oHU" = (
/obj/machinery/atmospherics/pipe/simple/general/visible{
@@ -53498,7 +53498,7 @@
/obj/machinery/light{
dir = 1
},
/turf/open/transparent/openspace,
/turf/open/openspace,
/area/science/xenobiology)
"pnD" = (
/obj/structure/table/glass,
@@ -53651,7 +53651,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,
@@ -55273,7 +55273,7 @@
pixel_y = -22
},
/obj/machinery/light,
/turf/open/transparent/openspace,
/turf/open/openspace,
/area/science/xenobiology)
"ulo" = (
/obj/effect/turf_decal/delivery,
@@ -56283,7 +56283,7 @@
/obj/machinery/firealarm{
pixel_y = 24
},
/turf/open/transparent/openspace,
/turf/open/openspace,
/area/science/xenobiology)
"wUs" = (
/obj/structure/closet/secure_closet/detective,
@@ -56560,7 +56560,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{
@@ -56592,7 +56592,7 @@
/obj/machinery/light{
dir = 4
},
/turf/open/transparent/openspace,
/turf/open/openspace,
/area/science/xenobiology)
"xCR" = (
/obj/effect/turf_decal/stripes/line{
@@ -56859,7 +56859,7 @@
/obj/structure/railing{
dir = 8
},
/turf/open/transparent/openspace,
/turf/open/openspace,
/area/science/xenobiology)
"ydc" = (
/obj/structure/cable,
@@ -56957,7 +56957,7 @@
dir = 4;
network = list("ss13","rd","xeno_pens")
},
/turf/open/transparent/openspace,
/turf/open/openspace,
/area/science/xenobiology)
(1,1,1) = {"
@@ -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{
+11 -11
View File
@@ -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,
+2 -2
View File
@@ -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"
}
]
+3 -1
View File
@@ -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
+1 -1
View File
@@ -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
+2 -2
View File
@@ -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))
+2
View File
@@ -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
+1 -1
View File
@@ -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)
+75
View File
@@ -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
+12 -8
View File
@@ -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.
+1 -5
View File
@@ -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
+1 -1
View File
@@ -141,7 +141,7 @@
/turf/open/space,
/turf/open/chasm,
/turf/open/lava,
/turf/open/transparent/openspace))
/turf/open/openspace))
set_base_icon()
@@ -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
+7 -7
View File
@@ -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)
. = ..()
+2 -2
View File
@@ -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))
@@ -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
+31
View File
@@ -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"
+25 -27
View File
@@ -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, "<span class='warning'>The plating is going to need some support! Place metal rods first.</span>")
/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, "<span class='notice'>You build a floor.</span>")
@@ -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.
+7
View File
@@ -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
-77
View File
@@ -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"
+3 -2
View File
@@ -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)
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
+2 -1
View File
@@ -587,6 +587,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"
@@ -1313,10 +1314,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"