diff --git a/_maps/bandastation/automapper/automapper_config.toml b/_maps/bandastation/automapper/automapper_config.toml index 7a9c4e6a722b4..d022c9d1ed7b2 100644 --- a/_maps/bandastation/automapper/automapper_config.toml +++ b/_maps/bandastation/automapper/automapper_config.toml @@ -118,4 +118,99 @@ map_files = ["tramstation_ntr_blueshield_office.dmm"] directory = "_maps/bandastation/automapper/templates/tramstation/" required_map = "tramstation.dmm" coordinates = [79, 130, 2] + +# Metastation Cryo +[templates.metastation_cryo] +map_files = ["metastation_cryo.dmm"] +directory = "_maps/bandastation/automapper/templates/metastation/" +required_map = "MetaStation.dmm" +coordinates = [133, 182, 1] +trait_name = "Station" + +# Metastation Perma Cryo +[templates.metastation_perma_cryo] +map_files = ["metastation_perma_cryo.dmm"] +directory = "_maps/bandastation/automapper/templates/metastation/" +required_map = "MetaStation.dmm" +coordinates = [84, 189, 1] +trait_name = "Station" + +# Deltastation Cryo +[templates.deltastation_cryo] +map_files = ["deltastation_cryo.dmm"] +directory = "_maps/bandastation/automapper/templates/deltastation/" +required_map = "DeltaStation2.dmm" +coordinates = [216, 93, 1] +trait_name = "Station" + +# Deltastation Perma Cryo +[templates.deltastation_perma_cryo] +map_files = ["deltastation_perma_cryo.dmm"] +directory = "_maps/bandastation/automapper/templates/deltastation/" +required_map = "DeltaStation2.dmm" +coordinates = [206, 168, 1] +trait_name = "Station" + +# Icebox Cryo +[templates.icebox_cryo] +map_files = ["icebox_cryo.dmm"] +directory = "_maps/bandastation/automapper/templates/iceboxstation/" +required_map = "IceBoxStation.dmm" +coordinates = [117, 142, 3] +trait_name = "Station" + +# Icebox Perma Cryo +[templates.icebox_perma_cryo] +map_files = ["icebox_perma_cryo.dmm"] +directory = "_maps/bandastation/automapper/templates/iceboxstation/" +required_map = "IceBoxStation.dmm" +coordinates = [108, 184, 2] +trait_name = "Station" + +# Tramstation Cryo +[templates.tramstation_cryo] +map_files = ["tramstation_cryo.dmm"] +directory = "_maps/bandastation/automapper/templates/tramstation/" +required_map = "tramstation.dmm" +coordinates = [68, 102, 2] +trait_name = "Station" + +# Tramstation Perma Cryo +[templates.tramstation_perma_cryo] +map_files = ["tramstation_perma_cryo.dmm"] +directory = "_maps/bandastation/automapper/templates/tramstation/" +required_map = "tramstation.dmm" +coordinates = [79, 149, 1] +trait_name = "Station" + +# Birdshot Cryo +[templates.birdshot_cryo] +map_files = ["birdshot_cryo.dmm"] +directory = "_maps/bandastation/automapper/templates/birdshot/" +required_map = "birdshot.dmm" +coordinates = [142, 84, 1] +trait_name = "Station" + +# Birdshot Perma Cryo +[templates.birdshot_perma_cryo] +map_files = ["birdshot_perma_cryo.dmm"] +directory = "_maps/bandastation/automapper/templates/birdshot/" +required_map = "birdshot.dmm" +coordinates = [76, 33, 1] +trait_name = "Station" + +# Nebulastation Cryo +[templates.nebulastation_cryo] +map_files = ["nebulastation_cryo.dmm"] +directory = "_maps/bandastation/automapper/templates/nebulastation/" +required_map = "NebulaStation.dmm" +coordinates = [81, 145, 1] +trait_name = "Station" + +# Nebulastation Perma Cryo +[templates.nebulastation_perma_cryo] +map_files = ["nebulastation_perma_cryo.dmm"] +directory = "_maps/bandastation/automapper/templates/nebulastation/" +required_map = "NebulaStation.dmm" +coordinates = [154, 86, 2] trait_name = "Station" diff --git a/_maps/bandastation/automapper/templates/birdshot/birdshot_cryo.dmm b/_maps/bandastation/automapper/templates/birdshot/birdshot_cryo.dmm new file mode 100644 index 0000000000000..bbe62f54c4ca4 --- /dev/null +++ b/_maps/bandastation/automapper/templates/birdshot/birdshot_cryo.dmm @@ -0,0 +1,216 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/turf/open/floor/plating, +/area/station/common/cryopods) +"c" = ( +/turf/closed/wall, +/area/station/common/cryopods) +"g" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/iron/white/corner{ + dir = 1 + }, +/area/station/hallway/secondary/entry) +"m" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/machinery/light/floor, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/white/corner{ + dir = 1 + }, +/area/station/hallway/secondary/entry) +"n" = ( +/obj/structure/sign/poster/official/random/directional/north, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 1 + }, +/turf/open/floor/iron/small, +/area/station/common/cryopods) +"p" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 1 + }, +/turf/open/floor/iron/small, +/area/station/common/cryopods) +"s" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 1 + }, +/turf/open/floor/iron/small, +/area/station/common/cryopods) +"v" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/radio/intercom/directional/north, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/turf/open/floor/iron/white/corner{ + dir = 1 + }, +/area/station/hallway/secondary/entry) +"x" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/small, +/area/station/common/cryopods) +"A" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron/white/corner{ + dir = 1 + }, +/area/station/hallway/secondary/entry) +"G" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/firedoor, +/obj/effect/landmark/navigate_destination{ + location = "Cryopods" + }, +/obj/machinery/door/airlock/public/glass{ + name = "Cryopods" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/textured_half, +/area/station/common/cryopods) +"J" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/white/corner{ + dir = 1 + }, +/area/station/hallway/secondary/entry) +"K" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/event_spawn, +/turf/open/floor/iron/small, +/area/station/common/cryopods) +"M" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/turf_decal/siding/thinplating_new/light/end, +/turf/open/floor/iron/dark, +/area/station/common/cryopods) +"Q" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/vending/clothing, +/turf/open/floor/iron/small, +/area/station/common/cryopods) +"R" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/small, +/area/station/common/cryopods) +"S" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/broken_flooring/corner/directional/south, +/obj/machinery/cryopod{ + dir = 4 + }, +/obj/machinery/camera/autoname/directional/west, +/turf/open/floor/iron/small, +/area/station/common/cryopods) +"U" = ( +/obj/machinery/cryopod{ + dir = 4 + }, +/obj/machinery/airalarm/directional/north, +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 1 + }, +/turf/open/floor/iron/small, +/area/station/common/cryopods) +"V" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/effect/turf_decal/stripes/corner{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/station/common/cryopods) +"Y" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/firedoor, +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/turf/open/floor/catwalk_floor, +/area/station/hallway/secondary/entry) + +(1,1,1) = {" +a +a +c +g +"} +(2,1,1) = {" +U +S +a +A +"} +(3,1,1) = {" +n +x +a +A +"} +(4,1,1) = {" +M +K +G +Y +"} +(5,1,1) = {" +s +R +a +J +"} +(6,1,1) = {" +p +Q +a +m +"} +(7,1,1) = {" +V +V +c +v +"} diff --git a/_maps/bandastation/automapper/templates/birdshot/birdshot_perma_cryo.dmm b/_maps/bandastation/automapper/templates/birdshot/birdshot_perma_cryo.dmm new file mode 100644 index 0000000000000..7e7b362c1af52 --- /dev/null +++ b/_maps/bandastation/automapper/templates/birdshot/birdshot_perma_cryo.dmm @@ -0,0 +1,10 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/obj/machinery/cryopod/prison/directional/east, +/obj/machinery/computer/cryopod/directional/south, +/turf/template_noop, +/area/template_noop) + +(1,1,1) = {" +a +"} diff --git a/_maps/bandastation/automapper/templates/deltastation/deltastation_cryo.dmm b/_maps/bandastation/automapper/templates/deltastation/deltastation_cryo.dmm new file mode 100644 index 0000000000000..a851dc8cbca13 --- /dev/null +++ b/_maps/bandastation/automapper/templates/deltastation/deltastation_cryo.dmm @@ -0,0 +1,107 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/closed/wall, +/area/station/commons/fitness/recreation) +"d" = ( +/obj/effect/turf_decal/siding/white, +/turf/open/floor/iron/dark, +/area/station/commons/fitness/recreation) +"e" = ( +/obj/machinery/computer/cryopod/directional/east, +/obj/machinery/light/directional/east, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/commons/fitness/recreation) +"k" = ( +/obj/machinery/cryopod{ + dir = 1 + }, +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, +/obj/machinery/airalarm/directional/east, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 1 + }, +/obj/machinery/camera/directional/east, +/turf/open/floor/iron/dark, +/area/station/commons/fitness/recreation) +"v" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/white, +/area/station/commons/fitness/recreation) +"F" = ( +/obj/machinery/cryopod{ + dir = 1 + }, +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/commons/fitness/recreation) +"G" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/public/glass{ + name = "Cryopods" + }, +/obj/effect/landmark/navigate_destination{ + location = "Cryopods" + }, +/turf/open/floor/iron/white, +/area/station/commons/fitness/recreation) +"I" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/commons/fitness/recreation) +"P" = ( +/obj/effect/landmark/start/hangover, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron/white, +/area/station/commons/fitness/recreation) +"Z" = ( +/obj/machinery/cryopod, +/obj/effect/turf_decal/siding/white, +/turf/open/floor/iron/dark, +/area/station/commons/fitness/recreation) + +(1,1,1) = {" +a +I +G +I +a +"} +(2,1,1) = {" +I +Z +P +F +I +"} +(3,1,1) = {" +I +Z +v +F +I +"} +(4,1,1) = {" +I +d +e +k +I +"} +(5,1,1) = {" +a +a +a +a +a +"} diff --git a/_maps/bandastation/automapper/templates/deltastation/deltastation_perma_cryo.dmm b/_maps/bandastation/automapper/templates/deltastation/deltastation_perma_cryo.dmm new file mode 100644 index 0000000000000..85f53d3dc11bd --- /dev/null +++ b/_maps/bandastation/automapper/templates/deltastation/deltastation_perma_cryo.dmm @@ -0,0 +1,14 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/obj/machinery/computer/cryopod/directional/west, +/turf/template_noop, +/area/template_noop) +"T" = ( +/obj/machinery/cryopod/prison/directional/west, +/turf/template_noop, +/area/template_noop) + +(1,1,1) = {" +T +a +"} diff --git a/_maps/bandastation/automapper/templates/iceboxstation/icebox_cryo.dmm b/_maps/bandastation/automapper/templates/iceboxstation/icebox_cryo.dmm new file mode 100644 index 0000000000000..c74ca531336bf --- /dev/null +++ b/_maps/bandastation/automapper/templates/iceboxstation/icebox_cryo.dmm @@ -0,0 +1,226 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/common/cryopods) +"b" = ( +/obj/machinery/cryopod{ + dir = 4 + }, +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/common/cryopods) +"e" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Dormitory" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/stripes/white/line, +/obj/effect/turf_decal/stripes/white/line{ + dir = 1 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured, +/area/station/commons/dorms) +"f" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/door/airlock/public/glass{ + name = "Cryopods" + }, +/obj/effect/landmark/navigate_destination, +/turf/open/floor/iron, +/area/station/common/cryopods) +"j" = ( +/obj/effect/turf_decal/siding/white{ + dir = 9 + }, +/obj/machinery/light/directional/east, +/turf/open/floor/iron/dark, +/area/station/common/cryopods) +"k" = ( +/obj/machinery/computer/cryopod/directional/north, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/common/cryopods) +"v" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/station/common/cryopods) +"y" = ( +/turf/template_noop, +/area/template_noop) +"z" = ( +/obj/machinery/cryopod{ + dir = 8 + }, +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/common/cryopods) +"B" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/light/floor, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"C" = ( +/turf/closed/wall, +/area/station/common/cryopods) +"E" = ( +/obj/machinery/cryopod{ + dir = 4 + }, +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/obj/machinery/camera/directional/west, +/turf/open/floor/iron/dark, +/area/station/common/cryopods) +"J" = ( +/obj/machinery/cryopod{ + dir = 4 + }, +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/obj/machinery/airalarm/directional/west, +/turf/open/floor/iron/dark, +/area/station/common/cryopods) +"K" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/light/directional/north, +/turf/open/floor/iron, +/area/station/common/cryopods) +"M" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/commons/dorms) +"P" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"Q" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/commons/dorms) +"T" = ( +/obj/machinery/light/floor, +/turf/open/floor/iron, +/area/station/hallway/primary/central) +"W" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/commons/dorms) +"Z" = ( +/obj/structure/extinguisher_cabinet/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/tile/neutral/half/contrasted{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/hallway/primary/central) + +(1,1,1) = {" +C +C +C +v +v +y +"} +(2,1,1) = {" +C +E +J +b +v +y +"} +(3,1,1) = {" +C +k +a +a +v +y +"} +(4,1,1) = {" +C +K +j +z +v +T +"} +(5,1,1) = {" +C +f +C +v +v +y +"} +(6,1,1) = {" +y +M +y +y +y +y +"} +(7,1,1) = {" +Q +W +e +Z +P +B +"} diff --git a/_maps/bandastation/automapper/templates/iceboxstation/icebox_perma_cryo.dmm b/_maps/bandastation/automapper/templates/iceboxstation/icebox_perma_cryo.dmm new file mode 100644 index 0000000000000..532b0796025f8 --- /dev/null +++ b/_maps/bandastation/automapper/templates/iceboxstation/icebox_perma_cryo.dmm @@ -0,0 +1,16 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/obj/machinery/cryopod/prison/directional/south, +/turf/template_noop, +/area/template_noop) +"V" = ( +/obj/machinery/computer/cryopod/directional/south, +/turf/template_noop, +/area/template_noop) + +(1,1,1) = {" +V +"} +(2,1,1) = {" +a +"} diff --git a/_maps/bandastation/automapper/templates/metastation/metastation_cryo.dmm b/_maps/bandastation/automapper/templates/metastation/metastation_cryo.dmm index 70281bf54fbad..046a5d202a0b4 100644 --- a/_maps/bandastation/automapper/templates/metastation/metastation_cryo.dmm +++ b/_maps/bandastation/automapper/templates/metastation/metastation_cryo.dmm @@ -3,13 +3,24 @@ /turf/template_noop, /area/template_noop) "e" = ( +/obj/machinery/computer/cryopod/directional/west, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, /obj/machinery/light/directional/west, +/obj/effect/turf_decal/trimline/dark_green/line, +/obj/effect/turf_decal/trimline/dark_green/line{ + dir = 1 + }, /turf/open/floor/iron/white, /area/station/common/cryopods) "i" = ( +/obj/machinery/cryopod{ + dir = 1 + }, +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, /obj/machinery/airalarm/directional/south, /turf/open/floor/iron/dark, /area/station/common/cryopods) @@ -18,15 +29,27 @@ /turf/open/floor/plating, /area/station/common/cryopods) "p" = ( +/obj/effect/turf_decal/siding/white, /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/dark, /area/station/common/cryopods) "q" = ( +/obj/machinery/cryopod{ + dir = 1 + }, +/obj/effect/turf_decal/siding/white{ + dir = 1 + }, /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/south, /turf/open/floor/iron/dark, /area/station/common/cryopods) "v" = ( +/obj/machinery/cryopod, +/obj/effect/turf_decal/siding/white, +/obj/machinery/camera/directional/north{ + c_tag = "Cryogenics Pods" + }, /turf/open/floor/iron/dark, /area/station/common/cryopods) "x" = ( @@ -46,6 +69,10 @@ /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/trimline/dark_green/line, +/obj/effect/turf_decal/trimline/dark_green/line{ + dir = 1 + }, /turf/open/floor/iron/white, /area/station/common/cryopods) "L" = ( diff --git a/_maps/bandastation/automapper/templates/metastation/metastation_perma_cryo.dmm b/_maps/bandastation/automapper/templates/metastation/metastation_perma_cryo.dmm new file mode 100644 index 0000000000000..61876147aad3b --- /dev/null +++ b/_maps/bandastation/automapper/templates/metastation/metastation_perma_cryo.dmm @@ -0,0 +1,14 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/obj/machinery/cryopod/prison/directional/east, +/turf/template_noop, +/area/template_noop) +"Z" = ( +/obj/machinery/computer/cryopod/directional/east, +/turf/template_noop, +/area/template_noop) + +(1,1,1) = {" +Z +a +"} diff --git a/_maps/bandastation/automapper/templates/nebulastation/nebulastation_cryo.dmm b/_maps/bandastation/automapper/templates/nebulastation/nebulastation_cryo.dmm new file mode 100644 index 0000000000000..bd14bd0746950 --- /dev/null +++ b/_maps/bandastation/automapper/templates/nebulastation/nebulastation_cryo.dmm @@ -0,0 +1,506 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"b" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/common/cryopods) +"c" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/item/kirbyplants/random, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/item/radio/intercom/directional/east, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/commons/dorms) +"h" = ( +/obj/item/clothing/suit/caution, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port/central) +"i" = ( +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating_new/light/corner{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating_new/light/corner{ + dir = 8 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/white/herringbone, +/area/station/commons/toilet/restrooms) +"j" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/chair{ + dir = 8 + }, +/obj/structure/cable, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/corner, +/area/station/commons/dorms) +"k" = ( +/obj/machinery/cryopod{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/dark_green/line{ + dir = 5 + }, +/turf/open/floor/iron/dark/textured, +/area/station/common/cryopods) +"l" = ( +/obj/machinery/door/airlock{ + name = "Unisex Restrooms" + }, +/obj/machinery/door/firedoor, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/commons/toilet/restrooms) +"m" = ( +/obj/machinery/computer/cryopod/directional/west, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/turf_decal/trimline/dark_green/line{ + dir = 9 + }, +/turf/open/floor/iron/dark/textured, +/area/station/common/cryopods) +"o" = ( +/obj/effect/turf_decal/siding/thinplating_new/light/end{ + dir = 1 + }, +/obj/structure/table/glass, +/obj/structure/bedsheetbin/empty, +/obj/structure/sign/poster/random/directional/north, +/obj/machinery/light/directional/north, +/turf/open/floor/iron/white/small, +/area/station/commons/toilet/restrooms) +"p" = ( +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 4 + }, +/obj/machinery/light/directional/west, +/obj/machinery/newscaster/directional/west, +/turf/open/floor/iron/white/herringbone, +/area/station/commons/toilet/restrooms) +"q" = ( +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/white/herringbone, +/area/station/commons/toilet/restrooms) +"t" = ( +/obj/machinery/cryopod{ + dir = 8 + }, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/effect/turf_decal/trimline/dark_green/line{ + dir = 6 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured, +/area/station/common/cryopods) +"u" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/side{ + dir = 4 + }, +/area/station/commons/dorms) +"x" = ( +/obj/effect/turf_decal/siding/thinplating_new/light/end, +/obj/machinery/duct, +/turf/open/floor/iron/white/small, +/area/station/commons/toilet/restrooms) +"A" = ( +/turf/open/floor/iron/stairs/medium{ + dir = 4 + }, +/area/station/commons/toilet/restrooms) +"C" = ( +/turf/template_noop, +/area/template_noop) +"D" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Dormitory Maintenance" + }, +/obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, +/obj/effect/mapping_helpers/airlock/unres, +/obj/machinery/duct, +/turf/open/floor/plating, +/area/station/maintenance/port/central) +"F" = ( +/obj/structure/mirror/directional/east, +/obj/effect/turf_decal/siding/thinplating_new/light/end{ + dir = 4 + }, +/obj/machinery/duct, +/obj/item/soap/deluxe{ + pixel_y = 2 + }, +/obj/item/soap{ + pixel_y = -4 + }, +/turf/open/floor/iron/white/small, +/area/station/commons/toilet/restrooms) +"G" = ( +/obj/structure/flora/bush/jungle/c/style_2, +/obj/structure/flora/bush/sparsegrass/style_random, +/obj/structure/flora/bush/lavendergrass/style_random, +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 1 + }, +/obj/effect/turf_decal/siding/thinplating_new/dark, +/obj/structure/flora/bush/large/style_2{ + pixel_y = 0 + }, +/obj/machinery/light/warm/directional/north, +/turf/open/floor/grass, +/area/station/common/cryopods) +"H" = ( +/turf/closed/wall, +/area/station/common/cryopods) +"K" = ( +/obj/effect/turf_decal/trimline/dark_green/filled/line{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark/textured, +/area/station/commons/dorms) +"L" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 10 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/hangover, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark/corner{ + dir = 4 + }, +/area/station/commons/dorms) +"M" = ( +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 8 + }, +/turf/open/floor/iron/white/herringbone, +/area/station/commons/toilet/restrooms) +"N" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/obj/machinery/airalarm/directional/south, +/obj/effect/turf_decal/trimline/dark_green/line{ + dir = 10 + }, +/obj/structure/cable, +/turf/open/floor/iron/dark/textured, +/area/station/common/cryopods) +"O" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/dark_green/filled/line{ + dir = 4 + }, +/turf/open/floor/iron/dark/textured, +/area/station/commons/dorms) +"S" = ( +/obj/structure/table/reinforced/rglass, +/obj/item/reagent_containers/cup/glass/waterbottle{ + pixel_x = -5; + pixel_y = 9 + }, +/obj/item/reagent_containers/cup/glass/waterbottle{ + pixel_x = 5; + pixel_y = 9 + }, +/obj/item/reagent_containers/cup/glass/waterbottle{ + pixel_y = 5 + }, +/obj/effect/turf_decal/tile/green/diagonal_centre, +/obj/effect/turf_decal/tile/blue/diagonal_centre, +/obj/effect/turf_decal/tile/dark_blue/diagonal_edge, +/obj/machinery/duct, +/turf/open/floor/iron/white/diagonal, +/area/station/commons/toilet/restrooms) +"U" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Cryopods" + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/landmark/navigate_destination{ + location = "Cryopods" + }, +/turf/open/floor/iron/dark/textured, +/area/station/common/cryopods) +"W" = ( +/obj/structure/reagent_dispensers/plumbed{ + dir = 4 + }, +/turf/open/floor/plating, +/area/station/maintenance/port/central) +"X" = ( +/obj/effect/turf_decal/siding/thinplating_new/light/corner, +/obj/effect/turf_decal/siding/thinplating_new/light/corner{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating_new/light/corner{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating_new/light/corner{ + dir = 1 + }, +/obj/effect/landmark/start/hangover, +/obj/machinery/duct, +/turf/open/floor/iron/white/small, +/area/station/commons/toilet/restrooms) +"Y" = ( +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 4 + }, +/turf/open/floor/iron/white/herringbone, +/area/station/commons/toilet/restrooms) + +(1,1,1) = {" +C +C +C +O +j +u +c +L +K +C +C +C +C +C +"} +(2,1,1) = {" +H +H +H +U +H +C +C +C +l +C +C +C +C +C +"} +(3,1,1) = {" +H +G +m +N +H +C +C +C +i +p +C +C +C +C +"} +(4,1,1) = {" +H +H +k +t +H +C +C +C +C +S +C +C +C +C +"} +(5,1,1) = {" +C +H +b +b +H +C +C +C +C +M +C +C +C +C +"} +(6,1,1) = {" +C +C +C +C +C +C +C +C +C +A +C +C +C +C +"} +(7,1,1) = {" +C +C +C +C +C +C +C +C +q +Y +C +C +C +C +"} +(8,1,1) = {" +C +C +C +C +C +C +C +C +C +C +C +C +C +C +"} +(9,1,1) = {" +C +C +C +C +C +C +C +C +C +C +C +C +C +C +"} +(10,1,1) = {" +C +C +C +C +C +C +C +C +C +C +C +C +C +C +"} +(11,1,1) = {" +C +C +C +C +C +C +C +C +C +C +C +C +W +C +"} +(12,1,1) = {" +C +C +C +C +C +C +C +C +o +X +x +D +h +C +"} +(13,1,1) = {" +C +C +C +C +C +C +C +C +C +F +C +C +C +C +"} diff --git a/_maps/bandastation/automapper/templates/nebulastation/nebulastation_perma_cryo.dmm b/_maps/bandastation/automapper/templates/nebulastation/nebulastation_perma_cryo.dmm new file mode 100644 index 0000000000000..be5cea81a396c --- /dev/null +++ b/_maps/bandastation/automapper/templates/nebulastation/nebulastation_perma_cryo.dmm @@ -0,0 +1,18 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/obj/effect/turf_decal/siding/thinplating_new/dark{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/red/filled/corner, +/obj/effect/turf_decal/siding/thinplating_new/dark/corner, +/obj/machinery/camera/autoname/directional/west{ + network = list("prison") + }, +/obj/machinery/cryopod/prison/directional/west, +/obj/machinery/computer/cryopod/directional/north, +/turf/open/floor/iron/dark/textured, +/area/station/security/prison) + +(1,1,1) = {" +a +"} diff --git a/_maps/bandastation/automapper/templates/northstar/northstar_cryo.dmm b/_maps/bandastation/automapper/templates/northstar/northstar_cryo.dmm new file mode 100644 index 0000000000000..fd4b5e70a6830 --- /dev/null +++ b/_maps/bandastation/automapper/templates/northstar/northstar_cryo.dmm @@ -0,0 +1,896 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"bp" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 8 + }, +/obj/machinery/light/directional/west, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) +"bV" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) +"bX" = ( +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 8 + }, +/obj/machinery/cryopod{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 4 + }, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/iron/dark, +/area/station/common/cryopods) +"di" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/commons/vacant_room/commissary) +"dG" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 8 + }, +/obj/structure/rack, +/obj/item/circuitboard/machine/processor{ + pixel_y = 10 + }, +/obj/item/circuitboard/machine/oven, +/obj/item/circuitboard/machine/microwave{ + pixel_y = -10 + }, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) +"dP" = ( +/obj/structure/window/spawner/directional/south, +/obj/structure/flora/bush/flowers_br/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, +/obj/structure/window/spawner/directional/east, +/turf/open/floor/grass, +/area/station/common/cryopods) +"eu" = ( +/obj/machinery/newscaster/directional/south, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/turf/open/floor/iron/checker, +/area/station/commons/vacant_room/commissary) +"eN" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) +"fj" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "comish_shutter" + }, +/turf/open/floor/plating, +/area/station/commons/vacant_room/commissary) +"fs" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 8 + }, +/obj/machinery/camera/directional/west, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) +"hm" = ( +/obj/structure/table/reinforced, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "comish_shutter" + }, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) +"hN" = ( +/obj/structure/chair, +/obj/structure/sign/poster/official/random/directional/east, +/turf/open/floor/iron/checker, +/area/station/commons/vacant_room/commissary) +"ia" = ( +/obj/structure/table, +/obj/item/pai_card, +/turf/open/floor/iron/checker, +/area/station/commons/vacant_room/commissary) +"ib" = ( +/obj/effect/turf_decal/tile/green/opposingcorners{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 8 + }, +/turf/open/floor/iron/checker, +/area/station/commons/vacant_room/commissary) +"ic" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 8 + }, +/obj/item/radio/intercom/directional/west, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) +"io" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Cryopods" + }, +/obj/effect/landmark/navigate_destination{ + location = "Cryopods" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/dark, +/area/station/common/cryopods) +"kc" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/green/filled/line, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) +"lt" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/dark, +/area/station/common/cryopods) +"lv" = ( +/obj/item/kirbyplants/random, +/turf/open/floor/iron/checker, +/area/station/commons/vacant_room/commissary) +"lO" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/door/airlock{ + name = "Vacant Commissary" + }, +/turf/open/floor/iron/dark, +/area/station/commons/vacant_room/commissary) +"mU" = ( +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 8 + }, +/obj/machinery/cryopod{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating_new/light{ + dir = 4 + }, +/obj/machinery/camera/directional/east, +/turf/open/floor/iron/dark, +/area/station/common/cryopods) +"ng" = ( +/obj/structure/chair, +/obj/machinery/light_switch/directional/west, +/turf/open/floor/iron/checker, +/area/station/commons/vacant_room/commissary) +"nC" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 6 + }, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/trimline/green/filled/corner{ + dir = 1 + }, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) +"nQ" = ( +/obj/effect/turf_decal/trimline/green/filled/line, +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/airalarm/directional/south, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) +"oz" = ( +/obj/structure/chair{ + dir = 1 + }, +/turf/open/floor/iron/checker, +/area/station/commons/vacant_room/commissary) +"oE" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron/dark/side, +/area/station/hallway/floor3/aft) +"oI" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/green/filled/line, +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) +"oZ" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/green/filled/line, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) +"qE" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) +"qF" = ( +/obj/effect/turf_decal/siding/thinplating_new/light/end, +/obj/machinery/cryopod{ + dir = 4 + }, +/obj/machinery/light/directional/west, +/turf/open/floor/iron/dark, +/area/station/common/cryopods) +"qI" = ( +/obj/structure/sign/poster/official/random/directional/west, +/obj/effect/spawner/random/vending/colavend, +/turf/open/floor/iron/checker, +/area/station/commons/vacant_room/commissary) +"qP" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/green/filled/line, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light/directional/north, +/obj/machinery/button/door/directional/north{ + name = "Commissary Shutters"; + pixel_x = -5; + id = "comish_shutter" + }, +/obj/machinery/button/door/directional/north{ + name = "Commissary Door"; + pixel_x = 7; + id = "comish_door"; + normaldoorcontrol = 1; + specialfunctions = 4 + }, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) +"rA" = ( +/obj/effect/turf_decal/tile/green/opposingcorners{ + dir = 8 + }, +/turf/open/floor/iron/checker, +/area/station/commons/vacant_room/commissary) +"rT" = ( +/obj/machinery/door/airlock/public/glass{ + name = "Cryopods" + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/dark, +/area/station/common/cryopods) +"se" = ( +/obj/machinery/airalarm/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/common/cryopods) +"si" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 5 + }, +/obj/effect/spawner/random/structure/crate, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/trimline/green/filled/corner{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) +"sM" = ( +/obj/machinery/airalarm/directional/north, +/turf/open/floor/iron/checker, +/area/station/commons/vacant_room/commissary) +"tv" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark/side, +/area/station/hallway/floor3/aft) +"wl" = ( +/obj/structure/window/spawner/directional/south, +/obj/structure/flora/bush/flowers_br/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, +/obj/structure/window/spawner/directional/west, +/turf/open/floor/grass, +/area/station/common/cryopods) +"wR" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/light/directional/east, +/obj/machinery/firealarm/directional/east, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) +"zq" = ( +/obj/machinery/computer/cryopod/directional/south, +/turf/open/floor/iron/dark, +/area/station/common/cryopods) +"Ao" = ( +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, +/area/station/common/cryopods) +"AB" = ( +/obj/structure/table, +/obj/machinery/light/directional/east, +/turf/open/floor/iron/checker, +/area/station/commons/vacant_room/commissary) +"AR" = ( +/obj/effect/turf_decal/trimline/green/filled/line, +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 1 + }, +/obj/structure/table, +/obj/item/stack/cable_coil, +/obj/item/stack/sheet/glass/fifty, +/obj/machinery/power/apc/auto_name/directional/south, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) +"CF" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/iron/checker, +/area/station/commons/vacant_room/commissary) +"CO" = ( +/turf/template_noop, +/area/template_noop) +"Dz" = ( +/obj/structure/disposalpipe/junction{ + dir = 4 + }, +/turf/open/floor/iron/dark/side, +/area/station/hallway/floor3/aft) +"ED" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) +"EE" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 8 + }, +/obj/machinery/holopad, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) +"Fk" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) +"FP" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/door/firedoor/heavy, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/commons/vacant_room/commissary) +"FR" = ( +/obj/effect/turf_decal/tile/green/opposingcorners{ + dir = 8 + }, +/obj/machinery/holopad, +/turf/open/floor/iron/checker, +/area/station/commons/vacant_room/commissary) +"Hk" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/green/filled/corner{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/table, +/obj/item/stack/sheet/iron/ten, +/obj/machinery/light_switch/directional/west, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) +"Io" = ( +/obj/machinery/cryopod{ + dir = 8 + }, +/obj/effect/turf_decal/siding/thinplating_new/light/end, +/turf/open/floor/iron/dark, +/area/station/common/cryopods) +"IB" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) +"IH" = ( +/turf/closed/wall, +/area/station/common/cryopods) +"JW" = ( +/obj/machinery/firealarm/directional/north, +/obj/item/radio/intercom/directional/west, +/turf/open/floor/iron/checker, +/area/station/commons/vacant_room/commissary) +"KR" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor/heavy, +/obj/effect/turf_decal/delivery, +/turf/open/floor/iron/dark, +/area/station/commons/vacant_room/commissary) +"Lc" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 8 + }, +/obj/structure/sign/poster/official/random/directional/west, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) +"MQ" = ( +/obj/effect/turf_decal/stripes/full, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock{ + name = "Vacant Commissary" + }, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) +"Nk" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 4 + }, +/obj/structure/chair/stool{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) +"NZ" = ( +/obj/structure/chair, +/turf/open/floor/iron/checker, +/area/station/commons/vacant_room/commissary) +"Oy" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) +"Po" = ( +/obj/machinery/cryopod{ + dir = 4 + }, +/obj/effect/turf_decal/siding/thinplating_new/light/end{ + dir = 1 + }, +/obj/item/radio/intercom/directional/west, +/turf/open/floor/iron/dark, +/area/station/common/cryopods) +"PN" = ( +/obj/structure/chair{ + dir = 1 + }, +/obj/effect/landmark/start/assistant, +/turf/open/floor/iron/checker, +/area/station/commons/vacant_room/commissary) +"QZ" = ( +/obj/structure/table, +/turf/open/floor/iron/checker, +/area/station/commons/vacant_room/commissary) +"Ra" = ( +/obj/structure/chair, +/obj/effect/landmark/start/assistant, +/turf/open/floor/iron/checker, +/area/station/commons/vacant_room/commissary) +"Sd" = ( +/obj/effect/turf_decal/tile/green/opposingcorners{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 8 + }, +/turf/open/floor/iron/checker, +/area/station/commons/vacant_room/commissary) +"Sf" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/green/filled/line, +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) +"SN" = ( +/turf/closed/wall, +/area/station/commons/vacant_room/commissary) +"SW" = ( +/obj/structure/table, +/obj/machinery/light/directional/west, +/turf/open/floor/iron/checker, +/area/station/commons/vacant_room/commissary) +"Ty" = ( +/obj/machinery/power/apc/auto_name/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/common/cryopods) +"TI" = ( +/obj/structure/disposalpipe/junction/flip{ + dir = 4 + }, +/turf/open/floor/iron/dark/side, +/area/station/hallway/floor3/aft) +"Ut" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) +"UU" = ( +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/green/filled/corner, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) +"Vu" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) +"Wr" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 4 + }, +/obj/structure/cable, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) +"WD" = ( +/obj/effect/turf_decal/tile/green/opposingcorners{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/checker, +/area/station/commons/vacant_room/commissary) +"XL" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/dark, +/area/station/common/cryopods) +"XR" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "comish_shutter" + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) +"Yt" = ( +/obj/effect/turf_decal/trimline/green/filled/line, +/obj/effect/turf_decal/trimline/green/filled/line{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/obj/structure/rack, +/obj/item/wrench, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) +"YW" = ( +/obj/effect/turf_decal/siding/thinplating_new/light/end{ + dir = 1 + }, +/obj/machinery/cryopod{ + dir = 8 + }, +/obj/machinery/light/directional/east, +/turf/open/floor/iron/dark, +/area/station/common/cryopods) +"Zv" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/turf_decal/trimline/green/filled/corner{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/green/filled/corner, +/turf/open/floor/iron, +/area/station/commons/vacant_room/commissary) +"ZM" = ( +/obj/effect/turf_decal/tile/green/opposingcorners{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/iron/checker, +/area/station/commons/vacant_room/commissary) + +(1,1,1) = {" +CO +SN +SN +SN +SN +SN +SN +CO +CO +CO +CO +CO +CO +CO +"} +(2,1,1) = {" +CO +SN +JW +ng +SW +CF +qI +CO +CO +CO +CO +CO +CO +CO +"} +(3,1,1) = {" +CO +di +lv +Ra +ia +PN +eu +CO +CO +CO +CO +CO +CO +CO +"} +(4,1,1) = {" +Dz +KR +Vu +Vu +EE +Vu +Ut +fs +ic +bp +Lc +CO +CO +CO +"} +(5,1,1) = {" +tv +FP +Wr +qE +Wr +eN +Zv +bV +bV +bV +bV +bV +IB +CO +"} +(6,1,1) = {" +TI +di +lv +NZ +QZ +oz +oI +SN +fj +hm +XR +hm +SN +CO +"} +(7,1,1) = {" +oE +SN +sM +hN +AB +oz +Sf +MQ +UU +ED +Nk +Oy +Hk +CO +"} +(8,1,1) = {" +CO +IH +IH +IH +IH +IH +rT +SN +qP +Sd +ib +rA +AR +CO +"} +(9,1,1) = {" +CO +Ao +dP +Po +bX +qF +se +SN +oZ +rA +FR +rA +Yt +CO +"} +(10,1,1) = {" +CO +io +XL +lt +lt +lt +Ty +SN +kc +ZM +WD +ZM +nQ +CO +"} +(11,1,1) = {" +CO +Ao +wl +YW +mU +Io +zq +SN +si +dG +wR +Fk +nC +CO +"} +(12,1,1) = {" +CO +IH +IH +IH +IH +IH +IH +SN +SN +SN +SN +lO +SN +CO +"} diff --git a/_maps/bandastation/automapper/templates/tramstation/tramstation_cryo.dmm b/_maps/bandastation/automapper/templates/tramstation/tramstation_cryo.dmm new file mode 100644 index 0000000000000..c7ac6ea3d396c --- /dev/null +++ b/_maps/bandastation/automapper/templates/tramstation/tramstation_cryo.dmm @@ -0,0 +1,444 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/closed/wall, +/area/station/commons/dorms/laundry) +"b" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/station/commons/dorms/laundry) +"c" = ( +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/obj/machinery/cryopod{ + dir = 8 + }, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/turf/open/floor/iron/dark, +/area/station/common/cryopods) +"d" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron, +/area/station/common/cryopods) +"e" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron/cafeteria, +/area/station/commons/dorms/laundry) +"f" = ( +/obj/structure/flora/bush/flowers_yw/style_random, +/turf/open/floor/grass, +/area/station/common/cryopods) +"g" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, +/turf/open/floor/iron/cafeteria, +/area/station/commons/dorms/laundry) +"j" = ( +/obj/structure/window/spawner/directional/south, +/obj/structure/flora/bush/flowers_br/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, +/turf/open/floor/grass, +/area/station/common/cryopods) +"k" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/structure/cable, +/obj/effect/landmark/start/assistant, +/turf/open/floor/iron/cafeteria, +/area/station/commons/dorms/laundry) +"l" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/turf/open/floor/iron, +/area/station/common/cryopods) +"m" = ( +/obj/structure/chair/stool/bar/directional/east, +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 1 + }, +/obj/machinery/bluespace_vendor/directional/north, +/turf/open/floor/iron, +/area/station/commons/fitness/recreation) +"n" = ( +/turf/closed/wall, +/area/station/security/checkpoint/arrivals) +"o" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/cafeteria, +/area/station/commons/dorms/laundry) +"q" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/machinery/vending/clothing, +/turf/open/floor/iron/cafeteria, +/area/station/commons/dorms/laundry) +"r" = ( +/obj/effect/spawner/random/entertainment/arcade{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/commons/fitness/recreation) +"s" = ( +/obj/machinery/light/directional/west, +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/obj/machinery/cryopod{ + dir = 4 + }, +/obj/machinery/airalarm/directional/west, +/turf/open/floor/iron/dark, +/area/station/common/cryopods) +"t" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/structure/closet/wardrobe/grey, +/obj/machinery/light/directional/east, +/obj/machinery/airalarm/directional/east, +/turf/open/floor/iron/cafeteria, +/area/station/commons/dorms/laundry) +"u" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/machinery/vending/autodrobe/all_access, +/turf/open/floor/iron/cafeteria, +/area/station/commons/dorms/laundry) +"v" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/structure/cable, +/turf/open/floor/iron/cafeteria, +/area/station/commons/dorms/laundry) +"w" = ( +/obj/effect/turf_decal/trimline/neutral/filled/corner{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/commons/fitness/recreation) +"x" = ( +/obj/machinery/holopad, +/obj/effect/turf_decal/bot, +/obj/item/radio/intercom/directional/north, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/commons/fitness/recreation) +"y" = ( +/obj/structure/flora/bush/flowers_br/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, +/obj/structure/flora/bush/flowers_yw/style_random, +/obj/structure/flora/bush/grassy/style_random, +/turf/open/floor/grass, +/area/station/common/cryopods) +"A" = ( +/obj/structure/chair/stool/bar/directional/west, +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 1 + }, +/obj/effect/landmark/start/assistant, +/turf/open/floor/iron, +/area/station/commons/fitness/recreation) +"B" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/common/cryopods) +"D" = ( +/turf/closed/wall, +/area/station/common/cryopods) +"E" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/structure/closet/wardrobe/white, +/turf/open/floor/iron/cafeteria, +/area/station/commons/dorms/laundry) +"F" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron, +/area/station/commons/fitness/recreation) +"H" = ( +/obj/effect/turf_decal/trimline/neutral/filled/corner{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron, +/area/station/commons/fitness/recreation) +"I" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/station/common/cryopods) +"J" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/machinery/washing_machine, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/extinguisher_cabinet/directional/west, +/turf/open/floor/iron/cafeteria, +/area/station/commons/dorms/laundry) +"L" = ( +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/obj/machinery/camera/directional/west, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/common/cryopods) +"M" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/door/airlock/public/glass{ + name = "Cryopods" + }, +/obj/effect/landmark/navigate_destination, +/turf/open/floor/iron, +/area/station/common/cryopods) +"N" = ( +/obj/effect/turf_decal/siding/white{ + dir = 4 + }, +/obj/machinery/cryopod{ + dir = 4 + }, +/obj/machinery/computer/cryopod/directional/west, +/turf/open/floor/iron/dark, +/area/station/common/cryopods) +"O" = ( +/obj/structure/window/spawner/directional/south, +/obj/structure/flora/bush/flowers_yw/style_random, +/turf/open/floor/grass, +/area/station/common/cryopods) +"P" = ( +/obj/effect/spawner/random/entertainment/arcade{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 1 + }, +/turf/open/floor/iron, +/area/station/commons/fitness/recreation) +"Q" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/cafeteria, +/area/station/commons/dorms/laundry) +"S" = ( +/obj/structure/flora/bush/flowers_br/style_random, +/obj/structure/flora/bush/flowers_pp/style_random, +/obj/item/toy/plush/lizard_plushie{ + desc = "A cute little lizard plushie. It has some soot on it."; + name = "Tends-The-Garden" + }, +/turf/open/floor/grass, +/area/station/common/cryopods) +"U" = ( +/obj/effect/turf_decal/siding/white{ + dir = 8 + }, +/obj/machinery/cryopod{ + dir = 8 + }, +/turf/open/floor/iron/dark, +/area/station/common/cryopods) +"V" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/machinery/power/apc/auto_name/directional/east, +/obj/structure/cable, +/obj/machinery/camera/directional/north{ + c_tag = "Civilian - Laundry Room" + }, +/turf/open/floor/iron/cafeteria, +/area/station/commons/dorms/laundry) +"X" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/open/floor/iron/cafeteria, +/area/station/commons/dorms/laundry) +"Y" = ( +/obj/structure/window/spawner/directional/south, +/obj/structure/flora/bush/flowers_pp/style_random, +/obj/structure/flora/bush/flowers_yw/style_random, +/obj/structure/flora/bush/grassy/style_random, +/turf/open/floor/grass, +/area/station/common/cryopods) +"Z" = ( +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/machinery/washing_machine, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/turf/open/floor/iron/cafeteria, +/area/station/commons/dorms/laundry) + +(1,1,1) = {" +n +D +D +D +D +D +D +P +"} +(2,1,1) = {" +n +y +O +s +N +L +I +A +"} +(3,1,1) = {" +n +f +Y +l +d +B +M +w +"} +(4,1,1) = {" +n +S +j +U +U +c +I +F +"} +(5,1,1) = {" +n +a +a +b +b +a +a +x +"} +(6,1,1) = {" +n +e +J +Z +Z +Z +Q +F +"} +(7,1,1) = {" +n +V +k +v +g +o +X +H +"} +(8,1,1) = {" +n +a +q +t +E +u +a +m +"} +(9,1,1) = {" +n +a +a +a +a +a +a +r +"} diff --git a/_maps/bandastation/automapper/templates/tramstation/tramstation_perma_cryo.dmm b/_maps/bandastation/automapper/templates/tramstation/tramstation_perma_cryo.dmm new file mode 100644 index 0000000000000..f7e5101185b80 --- /dev/null +++ b/_maps/bandastation/automapper/templates/tramstation/tramstation_perma_cryo.dmm @@ -0,0 +1,14 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/obj/machinery/computer/cryopod/directional/east, +/turf/template_noop, +/area/template_noop) +"k" = ( +/obj/machinery/cryopod/prison/directional/east, +/turf/template_noop, +/area/template_noop) + +(1,1,1) = {" +k +a +"} diff --git a/_maps/map_files/Cyberiad/Cyberiad.dmm b/_maps/map_files/Cyberiad/Cyberiad.dmm index 78d3bb9c2a8ff..88e6ec210edb7 100644 --- a/_maps/map_files/Cyberiad/Cyberiad.dmm +++ b/_maps/map_files/Cyberiad/Cyberiad.dmm @@ -4737,6 +4737,7 @@ /area/station/maintenance/port/greater) "bjb" = ( /obj/effect/turf_decal/tile/red, +/obj/machinery/computer/cryopod/directional/south, /turf/open/floor/iron, /area/station/security/prison) "bje" = ( @@ -8280,6 +8281,9 @@ /obj/effect/turf_decal/tile/green/half/contrasted{ dir = 4 }, +/obj/machinery/cryopod{ + dir = 4 + }, /turf/open/floor/iron/white, /area/station/common/cryopods) "cds" = ( @@ -28502,6 +28506,12 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/engineering/atmos/hfr_room) +"hlh" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/red/half/contrasted, +/obj/machinery/cryopod/prison/directional/south, +/turf/open/floor/iron, +/area/station/security/prison) "hll" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/blood, @@ -33106,6 +33116,9 @@ /obj/effect/turf_decal/tile/green{ dir = 8 }, +/obj/machinery/cryopod{ + dir = 8 + }, /turf/open/floor/iron/white, /area/station/common/cryopods) "ivi" = ( @@ -34633,6 +34646,9 @@ /area/station/medical/surgery/theatre) "iPy" = ( /obj/effect/turf_decal/tile/green, +/obj/machinery/cryopod{ + dir = 4 + }, /turf/open/floor/iron/white, /area/station/common/cryopods) "iPz" = ( @@ -40011,6 +40027,7 @@ /obj/effect/turf_decal/tile/green/fourcorners, /obj/machinery/light/directional/north, /obj/machinery/holopad, +/obj/machinery/computer/cryopod/directional/north, /turf/open/floor/iron/white, /area/station/common/cryopods) "kjC" = ( @@ -53088,6 +53105,9 @@ /obj/effect/turf_decal/tile/green{ dir = 4 }, +/obj/machinery/cryopod{ + dir = 4 + }, /turf/open/floor/iron/white, /area/station/common/cryopods) "nvj" = ( @@ -63268,6 +63288,9 @@ dir = 1 }, /obj/machinery/light_switch/directional/east, +/obj/machinery/cryopod{ + dir = 8 + }, /turf/open/floor/iron/white, /area/station/common/cryopods) "pWG" = ( @@ -76389,6 +76412,9 @@ dir = 8 }, /obj/machinery/airalarm/directional/east, +/obj/machinery/cryopod{ + dir = 8 + }, /turf/open/floor/iron/white, /area/station/common/cryopods) "tra" = ( @@ -182342,7 +182368,7 @@ qfK oxI gPp oZK -nGb +hlh rkC xSi tNX diff --git a/modular_bandastation/cryosleep/_cryosleep.dm b/modular_bandastation/cryosleep/_cryosleep.dm new file mode 100644 index 0000000000000..8a3d62ba3f1c0 --- /dev/null +++ b/modular_bandastation/cryosleep/_cryosleep.dm @@ -0,0 +1,4 @@ +/datum/modpack/cryosleep + name = "Капсулы криосна" + desc = "Добавляет капсулы для криосна." + author = "Azarak (автор, NovaSector), Ros_Sample (порт)" diff --git a/modular_bandastation/cryosleep/_cryosleep.dme b/modular_bandastation/cryosleep/_cryosleep.dme new file mode 100644 index 0000000000000..35a958e627030 --- /dev/null +++ b/modular_bandastation/cryosleep/_cryosleep.dme @@ -0,0 +1,15 @@ +#include "_cryosleep.dm" + +#include "code/admin.dm" +#include "code/ai.dm" +#include "code/config.dm" +#include "code/cryo_console_return.dm" +#include "code/cryopod.dm" +#include "code/cryoconsole.dm" +#include "code/job.dm" +#include "code/jobs.dm" +#include "code/mood.dm" +#include "code/extra_vv.dm" +#include "code/ssd_time.dm" + +// tgui/packages/tgui/interfaces/CryopodConsole.jsx diff --git a/modular_bandastation/cryosleep/code/admin.dm b/modular_bandastation/cryosleep/code/admin.dm new file mode 100644 index 0000000000000..00b6fc9118924 --- /dev/null +++ b/modular_bandastation/cryosleep/code/admin.dm @@ -0,0 +1,33 @@ +/// Send player in not-quiet cryopod. If with_paper = TRUE, place a paper with notification under player. +/mob/living/proc/send_to_cryo(with_paper = FALSE) + var/obj/machinery/cryopod/valid_pod + for(var/obj/machinery/cryopod/cryo in GLOB.valid_cryopods) + if(cryo.occupant || !cryo.state_open || cryo.panel_open) //free, opened, and panel closed? + return + if(buckled) + buckled.unbuckle_mob(src, TRUE) + if(buckled_mobs) + for(var/mob/buckled_mob in buckled_mobs) + unbuckle_mob(buckled_mob) + valid_pod = cryo + break + + if(!valid_pod) + message_admins("no valid pod found for [key_name(name)]") + return + + //effect + playsound(loc, 'sound/effects/magic/Repulse.ogg', 50, TRUE) + var/datum/effect_system/spark_spread/quantum/sparks = new + sparks.set_up(10, TRUE, loc) + sparks.start() + + //make a paper if need + if(with_paper) + var/obj/item/paper/cryo_paper = new /obj/item/paper(loc) + cryo_paper.name = "Уведомление - [name]" + cryo_paper.add_raw_text("Приносим искренние извинения, персону \"[name][job ? ", [job]," : ""]\" пришлось отправить в криогенное хранилище по причинам, которые на данный момент не могут быть уточнены.

С уважением,
Агентство Нанотрейзен по борьбе с SSD.") + cryo_paper.update_appearance() + + //put in pod + valid_pod.close_machine(src) //put player diff --git a/modular_bandastation/cryosleep/code/ai.dm b/modular_bandastation/cryosleep/code/ai.dm new file mode 100644 index 0000000000000..9754b8b6b37de --- /dev/null +++ b/modular_bandastation/cryosleep/code/ai.dm @@ -0,0 +1,17 @@ +/mob/living/silicon/ai/verb/ai_cryo() + set name = "AI Cryogenic Stasis" + set desc = "Перемещает текущий ИИ в криогенное хранилище, освобождая место для другого." + set category = "AI Commands" + + if(incapacitated) + return + if(tgui_alert(usr, "Войти в криогенный стазис? Вы станете призраком.", "Войти в криогенный стазис", list("Да", "Нет")) == "Да") + ghostize(FALSE) + minor_announce("Станционный ИИ был отключён от внутренних систем и был перемещён на хранение. Производится подготовка для загрузки нового ИИ.", "Станционный ИИ") + new /obj/structure/ai_core/latejoin_inactive(loc) + if(mind) + //Handle job slot/tater cleanup. + if(mind.assigned_role.title == JOB_AI) + SSjob.FreeRoleCryo(JOB_AI) + mind.special_role = null + qdel(src) diff --git a/modular_bandastation/cryosleep/code/config.dm b/modular_bandastation/cryosleep/code/config.dm new file mode 100644 index 0000000000000..ff1460ae1ec04 --- /dev/null +++ b/modular_bandastation/cryosleep/code/config.dm @@ -0,0 +1,2 @@ +/datum/config_entry/number/cryo_min_ssd_time + config_entry_value = 30 diff --git a/modular_bandastation/cryosleep/code/cryo_console_return.dm b/modular_bandastation/cryosleep/code/cryo_console_return.dm new file mode 100644 index 0000000000000..4da60b9ad1876 --- /dev/null +++ b/modular_bandastation/cryosleep/code/cryo_console_return.dm @@ -0,0 +1,23 @@ +/// Returns any items inside of the `items_to_send` list to a cryo console on station. +/mob/living/carbon/human/proc/return_items_to_console(list/items_to_send) + var/list/held_contents = get_contents() + if(!held_contents || !items_to_send) + return FALSE + + var/obj/machinery/computer/cryopod/target_console + for(var/obj/machinery/computer/cryopod/cryo_console in GLOB.cryopod_computers) + target_console = cryo_console + var/turf/target_turf = get_turf(target_console) + if(is_station_level(target_turf.z)) //If we find a cryo console on station, send items to it first and foremost. + break + + if(!target_console) + return FALSE + + for(var/obj/item/found_item in held_contents) + if(!is_type_in_list(found_item, items_to_send)) + continue + transferItemToLoc(found_item, target_console, force = TRUE, silent = TRUE) + target_console.frozen_item += found_item + + return TRUE diff --git a/modular_bandastation/cryosleep/code/cryoconsole.dm b/modular_bandastation/cryosleep/code/cryoconsole.dm new file mode 100644 index 0000000000000..06e56032f5b5a --- /dev/null +++ b/modular_bandastation/cryosleep/code/cryoconsole.dm @@ -0,0 +1,142 @@ +#define CRYO_JOIN "CRYO_JOIN" +#define CRYO_LEAVE "CRYO_LEAVE" + +/* + * Cryogenic refrigeration unit. Basically a despawner. + * Stealing a lot of concepts/code from sleepers due to massive laziness. + * The despawn tick will only fire if it's been more than time_till_despawned ticks + * since time_entered, which is world.time when the occupant moves in. + * ~ Zuhayr + */ +GLOBAL_LIST_EMPTY(cryopod_computers) + +GLOBAL_LIST_EMPTY(ghost_records) + +/// A list of all cryopods that aren't quiet, to be used by the "Send to Cryogenic Storage" VV action. +GLOBAL_LIST_EMPTY(valid_cryopods) + +//Main cryopod console. + +/obj/machinery/computer/cryopod + name = "cryogenic oversight console" + desc = "Интерфейс для взаимодействия экипажа с системами контроля криогенного хранилища." + icon = 'modular_bandastation/cryosleep/icons/cryogenics.dmi' + icon_state = "cellconsole_1" + icon_keyboard = null + icon_screen = null + use_power = FALSE + density = FALSE + interaction_flags_machine = INTERACT_MACHINE_OFFLINE + req_one_access = list(ACCESS_COMMAND, ACCESS_ARMORY) // Heads of staff or the warden can go here to claim recover items from their department that people went were cryodormed with. + verb_say = "coldly states" + verb_ask = "queries" + verb_exclaim = "alarms" + + /// Used for logging people entering cryosleep and important items they are carrying. + var/list/frozen_crew = list() + /// The items currently stored in the cryopod control panel. + var/list/frozen_item = list() + + /// This is what the announcement system uses to make announcements. Make sure to set a radio that has the channel you want to broadcast on. + var/obj/item/radio/headset/radio = /obj/item/radio/headset/silicon/ai + /// The channel to be broadcast on, valid values are the values of any of the "RADIO_CHANNEL_" defines. + var/announcement_channel = null // RADIO_CHANNEL_COMMON doesn't work here. + +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/cryopod, 32) + +/obj/machinery/computer/cryopod/Initialize(mapload) + . = ..() + GLOB.cryopod_computers += src + radio = new radio(src) + +/obj/machinery/computer/cryopod/Destroy() + GLOB.cryopod_computers -= src + QDEL_NULL(radio) + return ..() + +/obj/machinery/computer/cryopod/update_icon_state() + if(machine_stat & (NOPOWER|BROKEN)) + icon_state = "cellconsole" + return ..() + icon_state = "cellconsole_1" + return ..() + +/obj/machinery/computer/cryopod/ui_interact(mob/user, datum/tgui/ui) + . = ..() + if(machine_stat & (NOPOWER|BROKEN)) + return + + add_fingerprint(user) + + ui = SStgui.try_update_ui(user, src, ui) + if(!ui) + ui = new(user, src, "CryopodConsole", name) + ui.open() + +/obj/machinery/computer/cryopod/ui_data(mob/user) + var/list/data = list() + data["frozen_crew"] = frozen_crew + + /// The list of references to the stored items. + var/list/item_ref_list = list() + /// The associative list of the reference to an item and its name. + var/list/item_ref_name = list() + + for(var/obj/item/item in frozen_item) + var/ref = REF(item) + item_ref_list += ref + item_ref_name[ref] = item.declent_ru(NOMINATIVE) + + data["item_ref_list"] = item_ref_list + data["item_ref_name"] = item_ref_name + + // Check Access for item dropping. + var/item_retrieval_allowed = allowed(user) + data["item_retrieval_allowed"] = item_retrieval_allowed + + var/obj/item/card/id/id_card + if(isliving(user)) + var/mob/living/person = user + id_card = person.get_idcard() + if(id_card?.registered_name) + data["account_name"] = id_card.registered_name + + return data + +/obj/machinery/computer/cryopod/ui_act(action, list/params) + . = ..() + if(.) + return + switch(action) + if("item_get") + // This is using references, kinda clever, not gonna lie. Good work Zephyr + var/item_get = params["item_get"] + var/obj/item/item = locate(item_get) + if(item in frozen_item) + item.forceMove(drop_location()) + frozen_item.Remove(item_get, item) + visible_message("[capitalize(declent_ru(NOMINATIVE))] выдаёт [item.declent_ru(NOMINATIVE)].") + message_admins("[item] was retrieved from cryostorage at [ADMIN_COORDJMP(src)]") + else + CRASH("Invalid REF# for ui_act. Not inside internal list!") + return TRUE + + else + CRASH("Illegal action for ui_act: '[action]'") + +/obj/machinery/computer/cryopod/proc/announce(message_type, user, rank, occupant_departments_bitflags, occupant_job_radio, occupant_gender) + switch(message_type) + if(CRYO_JOIN) + radio.talk_into(src, "[user][rank ? ", [rank]," : ""] пробудил[genderize_ru(occupant_gender, "ся", "ась", "ось", "ись")] из криогенного хранилища.", announcement_channel) + if(CRYO_LEAVE) + if(occupant_job_radio) + if(occupant_departments_bitflags & DEPARTMENT_BITFLAG_COMMAND) + if(occupant_job_radio != RADIO_CHANNEL_COMMAND) + radio.talk_into(src, "[user][rank ? ", [rank]," : ""] был[genderize_ru(occupant_gender, "", "а", "о", "и")] перемещ[genderize_ru(occupant_gender, "ён", "ена", "ено", "ены")] в криогенное хранилище.", RADIO_CHANNEL_COMMAND) + radio.use_command = TRUE + radio.talk_into(src, "[user][rank ? ", [rank]," : ""] был[genderize_ru(occupant_gender, "", "а", "о", "и")] перемещ[genderize_ru(occupant_gender, "ён", "ена", "ено", "ены")] в криогенное хранилище.", occupant_job_radio) + radio.use_command = FALSE + radio.talk_into(src, "[user][rank ? ", [rank]," : ""] был[genderize_ru(occupant_gender, "", "а", "о", "и")] перемещ[genderize_ru(occupant_gender, "ён", "ена", "ено", "ены")] в криогенное хранилище.", announcement_channel) + +#undef CRYO_JOIN +#undef CRYO_LEAVE diff --git a/modular_bandastation/cryosleep/code/cryopod.dm b/modular_bandastation/cryosleep/code/cryopod.dm new file mode 100644 index 0000000000000..6a2842cb7d89e --- /dev/null +++ b/modular_bandastation/cryosleep/code/cryopod.dm @@ -0,0 +1,372 @@ +GLOBAL_LIST_EMPTY(objectives) + +#define CRYO_JOIN "CRYO_JOIN" +#define CRYO_LEAVE "CRYO_LEAVE" + +/datum/objective/New() + . = ..() + GLOB.objectives += src + +//Apparently objectives can be qdel'd. Learn a new thing every day +/datum/objective/Destroy() + GLOB.objectives -= src + return ..() + +// Cryopods themselves. +/obj/machinery/cryopod + name = "cryogenic freezer" + desc = "Камера предназначенная для киборгов и гуманоидов, является безопасным местом, где персонал, страдающий от расстройства космического сна, может немного отдохнуть." + icon = 'modular_bandastation/cryosleep/icons/cryogenics.dmi' + icon_state = "cryopod-open" + base_icon_state = "cryopod" + use_power = FALSE + density = TRUE + anchored = TRUE + state_open = TRUE + interaction_flags_mouse_drop = NEED_DEXTERITY + + var/open_icon_state = "cryopod-open" + /// Whether the cryopod respects the minimum time someone has to be disconnected before they can be put into cryo by another player + var/allow_timer_override = FALSE + /// Minimum time for someone to be SSD before another player can cryo them. + var/ssd_time = 30 MINUTES //Replace with "cryo_min_ssd_time" CONFIG + + /// Time until despawn when a mob enters a cryopod. You cannot other people in pods unless they're catatonic. + var/time_till_despawn = 30 SECONDS + /// Cooldown for when it's now safe to try an despawn the player. + COOLDOWN_DECLARE(despawn_world_time) + + ///Weakref to our controller + var/datum/weakref/control_computer_weakref + COOLDOWN_DECLARE(last_no_computer_message) + /// if false, plays announcement on cryo + var/quiet = FALSE + /// Has the occupant been tucked in? + var/tucked = FALSE + +/obj/machinery/cryopod/quiet + quiet = TRUE + +/obj/machinery/cryopod/Initialize(mapload) + ..() + if(!quiet) + GLOB.valid_cryopods += src + return INITIALIZE_HINT_LATELOAD //Gotta populate the cryopod computer GLOB first + +/obj/machinery/cryopod/post_machine_initialize() + . = ..() + update_icon() + find_control_computer() + +// This is not a good situation +/obj/machinery/cryopod/Destroy() + GLOB.valid_cryopods -= src + control_computer_weakref = null + return ..() + +/obj/machinery/cryopod/proc/find_control_computer(urgent = FALSE) + for(var/cryo_console as anything in GLOB.cryopod_computers) + var/obj/machinery/computer/cryopod/console = cryo_console + if(get_area(console) == get_area(src)) + control_computer_weakref = WEAKREF(console) + break + + // Don't send messages unless we *need* the computer, and less than five minutes have passed since last time we messaged + if(!control_computer_weakref && urgent && COOLDOWN_FINISHED(src, last_no_computer_message)) + COOLDOWN_START(src, last_no_computer_message, 5 MINUTES) + log_admin("Cryopod in [get_area(src)] could not find control computer!") + message_admins("Cryopod in [get_area(src)] could not find control computer!") + last_no_computer_message = world.time + + return control_computer_weakref != null + +/obj/machinery/cryopod/close_machine(atom/movable/target, density_to_set = TRUE) + if(!control_computer_weakref) + find_control_computer(TRUE) + if((isnull(target) || isliving(target)) && state_open && !panel_open) + . = ..(target) + var/mob/living/mob_occupant = occupant + if(mob_occupant?.stat != DEAD) + to_chat(occupant, span_notice("Вы чувствуете, как холодный воздух обволакивает вас. Чувства затухают и ваше тело немеет.")) + + COOLDOWN_START(src, despawn_world_time, time_till_despawn) + +/obj/machinery/cryopod/open_machine(drop = TRUE, density_to_set = FALSE) + . = ..() + set_density(TRUE) + name = initial(name) + tucked = FALSE + +/obj/machinery/cryopod/container_resist_act(mob/living/user) + visible_message(span_notice("[capitalize(occupant.declent_ru(NOMINATIVE))] вылезает из [declent_ru(GENITIVE)]!"), + span_notice("Вы вылезаете из [declent_ru(GENITIVE)]!")) + open_machine() + +/obj/machinery/cryopod/relaymove(mob/user) + container_resist_act(user) + +/obj/machinery/cryopod/process() + if(!isliving(occupant)) + return + + var/mob/living/mob_occupant = occupant + if(mob_occupant.stat == DEAD) + open_machine() + + if(!mob_occupant.client && COOLDOWN_FINISHED(src, despawn_world_time)) + if(!control_computer_weakref) + find_control_computer(urgent = TRUE) + + despawn_occupant() + +/obj/machinery/cryopod/proc/handle_objectives() + if(!isliving(occupant)) + return + + var/mob/living/mob_occupant = occupant + // Update any existing objectives involving this mob. + for(var/datum/objective/objective in GLOB.objectives) + // We don't want revs to get objectives that aren't for heads of staff. Letting + // them win or lose based on cryo is silly so we remove the objective. + if(istype(objective,/datum/objective/mutiny) && objective.target == mob_occupant.mind) + objective.team.objectives -= objective + qdel(objective) + for(var/datum/mind/mind in objective.team.members) + to_chat(mind.current, "
[span_userdanger("Ваша цель вне зоны досягаемости. Цель удалена!")]") + mind.announce_objectives() + return + if(istype(objective.target) && objective.target == mob_occupant.mind) + var/old_target = objective.target + objective.target = null + objective.find_target() + if(!objective.target && objective.owner) + to_chat(objective.owner.current, "
[span_userdanger("Ваша цель вне зоны досягаемости. Цель удалена!")]") + for(var/datum/antagonist/antag in objective.owner.antag_datums) + antag.objectives -= objective + if (!objective.team) + objective.update_explanation_text() + objective.owner.announce_objectives() + to_chat(objective.owner.current, "
[span_userdanger("Вы чувствуете, что ваша цель вне зоны досягаемости. Время плана [pick("Б","В","Г","Д","Ж","З")]. Цели обновлены!")]") + else + var/list/objectives_to_update + for(var/datum/mind/objective_owner in objective.get_owners()) + to_chat(objective_owner.current, "
[span_userdanger("Вы чувствуете, что ваша цель вне зоны досягаемости. Время плана [pick("Б","В","Г","Д","Ж","З")]. Цели обновлены!")]") + for(var/datum/objective/update_target_objective in objective_owner.get_all_objectives()) + LAZYADD(objectives_to_update, update_target_objective) + objectives_to_update += objective.team.objectives + for(var/datum/objective/update_objective in objectives_to_update) + if(update_objective.target != old_target || !istype(update_objective,objective.type)) + continue + update_objective.target = objective.target + update_objective.update_explanation_text() + to_chat(objective.owner.current, "
[span_userdanger("Вы чувствуете, что ваша цель вне зоны досягаемости. Время плана [pick("Б","В","Г","Д","Ж","З")]. Цели обновлены!")]") + update_objective.owner.announce_objectives() + qdel(objective) + +/// This function can not be undone; do not call this unless you are sure. +/// Handles despawning the player. +/obj/machinery/cryopod/proc/despawn_occupant() + if(!isliving(occupant)) + return + + var/mob/living/mob_occupant = occupant + + var/occupant_ckey = mob_occupant.ckey || mob_occupant.mind?.key + var/occupant_name = mob_occupant.name + var/occupant_rank = mob_occupant.mind?.assigned_role.title + var/occupant_departments_bitflags = mob_occupant.mind?.assigned_role.departments_bitflags + var/occupant_job_radio = mob_occupant.mind?.assigned_role.default_radio_channel + var/occupant_gender = mob_occupant.gender // для аннонсов + + SSjob.FreeRoleCryo(occupant_rank) + + // Delete them from datacore and ghost records. + var/announce_rank = null + + for(var/list/record in GLOB.ghost_records) + if(record["name"] == occupant_name) + announce_rank = record["rank"] + GLOB.ghost_records.Remove(list(record)) + break + + if(!announce_rank) // No need to loop over all of those if we already found it beforehand. + for(var/datum/record/crew/possible_target_record as anything in GLOB.manifest.general) + if(possible_target_record.name == occupant_name && (occupant_rank == "N/A" || possible_target_record.trim == job_title_ru(occupant_rank))) + announce_rank = possible_target_record.rank + qdel(possible_target_record) + break + + var/obj/machinery/computer/cryopod/control_computer = control_computer_weakref?.resolve() + if(!control_computer) + control_computer_weakref = null + else + control_computer.frozen_crew += list(list("name" = occupant_name, "job" = job_title_ru(occupant_rank))) + + // Make an announcement and log the person entering storage. If set to quiet, does not make an announcement. + if(!quiet) + control_computer.announce(CRYO_LEAVE, mob_occupant.real_name, announce_rank, occupant_departments_bitflags, occupant_job_radio, occupant_gender) + + visible_message(span_notice("[capitalize(declent_ru(NOMINATIVE))] гудит и шипит, перемещая [mob_occupant.declent_ru(ACCUSATIVE)] в хранилище.")) + + for(var/obj/item/item_content as anything in mob_occupant) + if(!istype(item_content) || HAS_TRAIT(item_content, TRAIT_NODROP)) + continue + if(issilicon(mob_occupant) && istype(item_content, /obj/item/mmi)) + continue + if(control_computer) + if(istype(item_content, /obj/item/modular_computer)) + var/obj/item/modular_computer/computer = item_content + for(var/datum/computer_file/program/messenger/message_app in computer.stored_files) + message_app.invisible = TRUE + mob_occupant.transferItemToLoc(item_content, control_computer, force = TRUE, silent = TRUE) + item_content.dropped(mob_occupant) + control_computer.frozen_item += item_content + else + mob_occupant.transferItemToLoc(item_content, drop_location(), force = TRUE, silent = TRUE) + + GLOB.joined_player_list -= occupant_ckey + + handle_objectives() + mob_occupant.ghostize() + QDEL_NULL(occupant) + open_machine() + name = initial(name) + +/obj/machinery/cryopod/mouse_drop_receive(mob/living/target, mob/user, params) + if(!istype(target) || isanimal(target) || !istype(user.loc, /turf) || target.buckled) + return + + if(occupant) + to_chat(user, span_notice("[capitalize(declent_ru(NOMINATIVE))] уже занята!")) + return + + if(target.stat == DEAD) + to_chat(user, span_notice("Мёртвых людей нельзя поместить в криохранилище.")) + return + +// Allows admins to enable players to override SSD Time check. + if(allow_timer_override) + if(tgui_alert(user, "Хотите помесить [target.declent_ru(ACCUSATIVE)] в [declent_ru(ACCUSATIVE)]?", "Поместить в [declent_ru(ACCUSATIVE)]?", list("Да", "Нет")) == "Да") + to_chat(user, span_danger("Вы помещаете [target.declent_ru(ACCUSATIVE)] в [declent_ru(ACCUSATIVE)].")) + log_admin("[key_name(user)] has put [key_name(target)] into a overridden stasis pod.") + message_admins("[key_name(user)] has put [key_name(target)] into a overridden stasis pod. [ADMIN_JMP(src)]") + + add_fingerprint(target) + + close_machine(target) + ru_names_rename(ru_names_toml(src::name, suffix = " ([target.declent_ru(NOMINATIVE)])", override_base = "[name] ([target.name])")) + name = "[name] ([target.name])" + +// Allows players to cryo others. Checks if they have been AFK for 30 minutes. + if(target.key && user != target) + if(target.get_organ_by_type(/obj/item/organ/brain)) //Target the Brain + if(!target.mind || target.is_ssd) // Is the character empty / AI Controlled + if(target.lastclienttime + ssd_time >= world.time) + to_chat(user, span_notice("Вы не можете поместить [target.declent_ru(ACCUSATIVE)] в [declent_ru(ACCUSATIVE)] ещё [round(((ssd_time - (world.time - target.lastclienttime)) / (1 MINUTES)), 1)] минут.")) + log_admin("[key_name(user)] has attempted to put [key_name(target)] into a stasis pod, but they were only disconnected for [round(((world.time - target.lastclienttime) / (1 MINUTES)), 1)] minutes.") + message_admins("[key_name(user)] has attempted to put [key_name(target)] into a stasis pod. [ADMIN_JMP(src)]") + return + else if(tgui_alert(user, "Хотите поместить [target.declent_ru(ACCUSATIVE)] в [declent_ru(ACCUSATIVE)]?", "Поместить в криокамеру?", list("Да", "Нет")) == "Да") + if(target.mind.assigned_role.req_admin_notify) + tgui_alert(user, "Они играют на важной роли! Уверены что хотите переместить их в криохранилище?") + to_chat(user, span_danger("Вы помещаете [target.declent_ru(ACCUSATIVE)] в [declent_ru(ACCUSATIVE)].")) + log_admin("[key_name(user)] has put [key_name(target)] into a stasis pod.") + message_admins("[key_name(user)] has put [key_name(target)] into a stasis pod. [ADMIN_JMP(src)]") + + add_fingerprint(target) + + close_machine(target) + + ru_names_rename(ru_names_toml(src::name, suffix = " ([target.declent_ru(NOMINATIVE)])", override_base = "[name] ([target.name])")) + name = "[name] ([target.name])" + + else if(iscyborg(target)) + to_chat(user, span_danger("Вы не можете поместить [target.declent_ru(ACCUSATIVE)] в [declent_ru(ACCUSATIVE)]. Юнит активен.")) + else + to_chat(user, span_danger("Вы не можете поместить [target.declent_ru(ACCUSATIVE)] в [declent_ru(ACCUSATIVE)]. [target.ru_p_they(TRUE)] в сознании.")) + return + + if(target == user && (tgui_alert(target, "Войти в криохранилище?", "Войти в криокапсулу?", list("Да", "Нет")) == "Нет")) + return + + if(target == user) + if(target.mind.assigned_role.req_admin_notify) + tgui_alert(target, "Вы играете на важной роли! Уверены что хотите покинуть раунд?") + var/datum/antagonist/antag = target.mind.has_antag_datum(/datum/antagonist) + if(antag) + tgui_alert(target, "Вы [antag.name]! Уверены что хотите покинуть раунд?") + + if(LAZYLEN(target.buckled_mobs) > 0) + if(target == user) + to_chat(user, span_danger("Вы не сможете влезеть в [declent_ru(ACCUSATIVE)], пока к вам кто-то пристёгнут.")) + else + to_chat(user, span_danger("[capitalize(target.declent_ru(NOMINATIVE))] не сможет влезть в [declent_ru(ACCUSATIVE)], пока [target.ru_p_they()] пристёгнут[genderize_ru(target.gender, "", "а", "о", "ы")].")) + return + + if(!istype(target) || !can_interact(user) || !target.Adjacent(user) || !ismob(target) || isanimal(target) || !istype(user.loc, /turf) || target.buckled) + return + // rerun the checks in case of shenanigans + + if(occupant) + to_chat(user, span_notice("[capitalize(declent_ru(NOMINATIVE))] занята!")) + return + + if(target == user) + visible_message(span_infoplain("[capitalize(user.declent_ru(NOMINATIVE))] залезает в [declent_ru(ACCUSATIVE)].")) + else + visible_message(span_infoplain("[capitalize(user.declent_ru(NOMINATIVE))] помещает [target.declent_ru(ACCUSATIVE)] в [declent_ru(ACCUSATIVE)].")) + + to_chat(target, span_warning("Если вы станете призраком, выйдете из игры или закроете клиент, ваш персонаж вскоре будет навсегда удален из раунда.")) + + log_admin("[key_name(target)] entered a stasis pod.") + message_admins("[key_name_admin(target)] entered a stasis pod. [ADMIN_JMP(src)]") + add_fingerprint(target) + + close_machine(target) + ru_names_rename(ru_names_toml(src::name, suffix = " ([target.declent_ru(NOMINATIVE)])", override_base = "[name] ([target.name])")) + name = "[name] ([target.name])" + +// Attacks/effects. +/obj/machinery/cryopod/blob_act() + return // Sorta gamey, but we don't really want these to be destroyed. + +/obj/machinery/cryopod/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + . = ..() + if(istype(tool, /obj/item/bedsheet)) + if(!isliving(occupant)) + return ITEM_INTERACT_BLOCKING + if(tucked) + to_chat(user, span_warning("[capitalize(occupant.declent_ru(NOMINATIVE))] выглядит уже достаточно комфортабельно!")) + return ITEM_INTERACT_BLOCKING + to_chat(user, span_notice("Вы укладываете [occupant.declent_ru(ACCUSATIVE)] в [declent_ru(ACCUSATIVE)]!")) + qdel(tool) + user.add_mood_event("tucked", /datum/mood_event/tucked_in, occupant) + tucked = TRUE + return ITEM_INTERACT_SUCCESS + +/obj/machinery/cryopod/update_icon_state() + icon_state = state_open ? open_icon_state : base_icon_state + return ..() + +/// Special wall mounted cryopod for the prison, making it easier to autospawn. +/obj/machinery/cryopod/prison + icon_state = "prisonpod" + base_icon_state = "prisonpod" + open_icon_state = "prisonpod" + density = FALSE + +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/cryopod/prison, 18) + +/obj/machinery/cryopod/prison/close_machine(atom/movable/target, density_to_set = FALSE) + . = ..() + // Flick the pod for a second when user enters + set_density(FALSE) + flick("prisonpod-open", src) + +/obj/machinery/cryopod/prison/open_machine(drop = TRUE, density_to_set = FALSE) + . = ..() + set_density(FALSE) + flick("prisonpod-open", src) + +#undef CRYO_JOIN +#undef CRYO_LEAVE diff --git a/modular_bandastation/cryosleep/code/extra_vv.dm b/modular_bandastation/cryosleep/code/extra_vv.dm new file mode 100644 index 0000000000000..b431a51362ed2 --- /dev/null +++ b/modular_bandastation/cryosleep/code/extra_vv.dm @@ -0,0 +1,37 @@ +// дефайн для vvшки модуля криосна +#define VV_HK_SEND_CRYO "send_to_cryo" + +/** + * EXTRA MOB VV + */ +/mob/living/vv_get_dropdown() + . = ..() + VV_DROPDOWN_OPTION(VV_HK_SEND_CRYO, "Send to Cryogenic Storage") + +/mob/living/vv_do_topic(list/href_list) + . = ..() + + if(!.) + return + + if(href_list[VV_HK_SEND_CRYO]) + vv_send_cryo() + +/mob/living/proc/vv_send_cryo() + if(!check_rights(R_SPAWN)) + return + + var/send_notice = tgui_alert(usr, "Добавить записку об отправке [declent_ru(ACCUSATIVE)] в криопод?", "Оставить записку?", list("Да", "Нет", "Отмена")) + if(send_notice != "Да" && send_notice != "Нет") + return + + //log/message + log_admin("[key_name(usr)] has put [key_name(src)] into a cryopod.") + var/msg = span_notice("[key_name_admin(usr)] has put [key_name(src)] into a cryopod from [ADMIN_VERBOSEJMP(src)].") + message_admins(msg) + admin_ticket_log(src, msg) + + send_notice = send_notice == "Да" + send_to_cryo(send_notice) + +#undef VV_HK_SEND_CRYO diff --git a/modular_bandastation/cryosleep/code/job.dm b/modular_bandastation/cryosleep/code/job.dm new file mode 100644 index 0000000000000..58c25a8795d1f --- /dev/null +++ b/modular_bandastation/cryosleep/code/job.dm @@ -0,0 +1,8 @@ +/datum/controller/subsystem/job/proc/FreeRoleCryo(rank) + if(!rank) + return + job_debug("Freeing role: [rank]") + var/datum/job/job = get_job(rank) + if(!job) + return FALSE + job.current_positions = max(0, job.current_positions - 1) diff --git a/modular_bandastation/cryosleep/code/jobs.dm b/modular_bandastation/cryosleep/code/jobs.dm new file mode 100644 index 0000000000000..8416b1c913449 --- /dev/null +++ b/modular_bandastation/cryosleep/code/jobs.dm @@ -0,0 +1,16 @@ +/datum/job + var/default_radio_channel = null +/datum/job/chief_medical_officer + default_radio_channel = RADIO_CHANNEL_MEDICAL +/datum/job/chief_engineer + default_radio_channel = RADIO_CHANNEL_ENGINEERING +/datum/job/head_of_security + default_radio_channel = RADIO_CHANNEL_SECURITY +/datum/job/head_of_personnel + default_radio_channel = RADIO_CHANNEL_SERVICE +/datum/job/research_director + default_radio_channel = RADIO_CHANNEL_SCIENCE +/datum/job/quartermaster + default_radio_channel = RADIO_CHANNEL_SUPPLY +/datum/job/captain + default_radio_channel = RADIO_CHANNEL_COMMAND diff --git a/modular_bandastation/cryosleep/code/mood.dm b/modular_bandastation/cryosleep/code/mood.dm new file mode 100644 index 0000000000000..322de63b31d37 --- /dev/null +++ b/modular_bandastation/cryosleep/code/mood.dm @@ -0,0 +1,9 @@ +/datum/mood_event/tucked_in + description = "Я чувствую себя лучше, уложив кого-то отдохнуть на ночь!" + mood_change = 3 + timeout = 2 MINUTES + +/datum/mood_event/tucked_in/add_effects(mob/living/tuckee) + if(!tuckee) + return + description = "Я чувствую себя лучше, уложив [tuckee.declent_ru(ACCUSATIVE)] отдохнуть на ночь!" diff --git a/modular_bandastation/cryosleep/code/ssd_time.dm b/modular_bandastation/cryosleep/code/ssd_time.dm new file mode 100644 index 0000000000000..83848c3ef9ba0 --- /dev/null +++ b/modular_bandastation/cryosleep/code/ssd_time.dm @@ -0,0 +1,30 @@ +/mob/living + var/lastclienttime = 0 + var/is_ssd = FALSE + +/mob/living/proc/set_ssd_state(state) + if(state == is_ssd) + return + is_ssd = state + +/mob/living/Login() + . = ..() + set_ssd_state(FALSE) + +/mob/living/Logout() + lastclienttime = world.time + set_ssd_state(TRUE) + . = ..() + +//Temporary, look below for the reason +/mob/living/ghostize(can_reenter_corpse = TRUE) + . = ..() + set_ssd_state(FALSE) + +/* +//EDIT - TRANSFER CKEY IS NOT A THING ON THE TG CODEBASE, if things break too bad because of it, consider implementing it +//This proc should stop mobs from having the overlay when someone keeps jumping control of mobs, unfortunately it causes Aghosts to have their character without the SSD overlay, I wasn't able to find a better proc unfortunately +/mob/living/transfer_ckey(mob/new_mob, send_signal = TRUE) + ..() + set_ssd_state(FALSE) +*/ diff --git a/modular_bandastation/cryosleep/icons/cryogenics.dmi b/modular_bandastation/cryosleep/icons/cryogenics.dmi new file mode 100644 index 0000000000000..44a68fa8d381a Binary files /dev/null and b/modular_bandastation/cryosleep/icons/cryogenics.dmi differ diff --git a/modular_bandastation/modular_bandastation.dme b/modular_bandastation/modular_bandastation.dme index e0d19e63e5c8d..1555aa7cbd2b2 100644 --- a/modular_bandastation/modular_bandastation.dme +++ b/modular_bandastation/modular_bandastation.dme @@ -39,6 +39,7 @@ #include "world_topics/_world_topics.dme" #include "preferences/_preferences.dme" #include "jukebox/_jukebox.dme" +#include "cryosleep/_cryosleep.dme" #include "objects/_objects.dme" #include "orderables/_orderables.dme" #include "automatic_crew_transfer/_automatic_crew_transfer.dme" diff --git a/modular_bandastation/translations/code/translation_data/ru_names.toml b/modular_bandastation/translations/code/translation_data/ru_names.toml index cc1f2e0de84d8..cc799a0d6cb32 100644 --- a/modular_bandastation/translations/code/translation_data/ru_names.toml +++ b/modular_bandastation/translations/code/translation_data/ru_names.toml @@ -367,6 +367,24 @@ instrumental = "коробкой" prepositional = "коробке" gender = "female" +["cryogenic freezer"] +nominative = "криогенная морозильная камера" +genitive = "криогенной морозильной камеры" +dative = "криогенной морозильной камере" +accusative = "криогенную морозильную камеру" +instrumental = "криогенной морозильной камерой" +prepositional = "криогенной морозильной камере" +gender = "female" + +["cryogenic oversight console"] +nominative = "консоль криогенного контроля" +genitive = "консоли криогенного контроля" +dative = "консоли криогенного контроля" +accusative = "консоль криогенного контроля" +instrumental = "консолью криогенного контроля" +prepositional = "консоли криогенного контроля" +gender = "female" + # MARK: Mobs. Uncategorized # MARK: Mobs. Aliens diff --git a/tgui/packages/tgui/interfaces/CryopodConsole.jsx b/tgui/packages/tgui/interfaces/CryopodConsole.jsx new file mode 100644 index 0000000000000..70f5ee0683567 --- /dev/null +++ b/tgui/packages/tgui/interfaces/CryopodConsole.jsx @@ -0,0 +1,83 @@ +// THIS IS A BANDASTATION UI FILE +import { useBackend } from '../backend'; +import { + Button, + LabeledList, + NoticeBox, + Section, + Stack, +} from 'tgui-core/components'; +import { Window } from '../layouts'; + +export const CryopodConsole = (props) => { + const { data } = useBackend(); + const { account_name } = data; + + const welcomeTitle = `Добро пожаловать, ${account_name || '[УДАЛЕНО]'}!`; + + return ( + + + + +
+ Данная автоматизированная система криогенной заморозки надежно + сохранит вашу материальную оболочку до следующего назначения. +
+
+ + + + + + +
+
+
+ ); +}; + +const CrewList = (props) => { + const { data } = useBackend(); + const { frozen_crew } = data; + + return ( + (frozen_crew.length && ( +
+ + {frozen_crew.map((person) => ( + + {person.job} + + ))} + +
+ )) || Нет экипажа на хранении! + ); +}; + +const ItemList = (props) => { + const { act, data } = useBackend(); + const { item_ref_list, item_ref_name, item_retrieval_allowed } = data; + if (!item_retrieval_allowed) { + return Вы не авторизованы для менеджмента предметов.; + } + return ( + (item_ref_list.length && ( +
+ + {item_ref_list.map((item) => ( + +
+ )) || Нет предметов на хранении! + ); +};