diff --git a/_maps/RandomRuins/IceRuins/skyrat/icemoon_underground_syndicate_base1_skyrat.dmm b/_maps/RandomRuins/IceRuins/skyrat/icemoon_underground_syndicate_base1_skyrat.dmm index ced8864b7bc..6d661549b9e 100644 --- a/_maps/RandomRuins/IceRuins/skyrat/icemoon_underground_syndicate_base1_skyrat.dmm +++ b/_maps/RandomRuins/IceRuins/skyrat/icemoon_underground_syndicate_base1_skyrat.dmm @@ -2211,10 +2211,7 @@ /turf/open/floor/plating, /area/ruin/syndicate_lava_base/main) "tx" = ( -/obj/machinery/computer/cryopod/interdyne{ - dir = 4; - pixel_x = -24 - }, +/obj/machinery/computer/cryopod/interdyne/directional/west, /obj/machinery/cryopod{ dir = 4 }, diff --git a/_maps/RandomRuins/LavaRuins/skyrat/lavaland_surface_syndicate_base1_skyrat.dmm b/_maps/RandomRuins/LavaRuins/skyrat/lavaland_surface_syndicate_base1_skyrat.dmm index 2dddeb9a30a..e486361c620 100644 --- a/_maps/RandomRuins/LavaRuins/skyrat/lavaland_surface_syndicate_base1_skyrat.dmm +++ b/_maps/RandomRuins/LavaRuins/skyrat/lavaland_surface_syndicate_base1_skyrat.dmm @@ -4142,10 +4142,7 @@ /obj/machinery/cryopod{ dir = 4 }, -/obj/machinery/computer/cryopod/interdyne{ - dir = 4; - pixel_x = -24 - }, +/obj/machinery/computer/cryopod/interdyne/directional/west, /turf/open/floor/iron, /area/ruin/syndicate_lava_base/dormitories) "Qk" = ( diff --git a/_maps/RandomRuins/SpaceRuins/skyrat/cargodiselost.dmm b/_maps/RandomRuins/SpaceRuins/skyrat/cargodiselost.dmm index 8bd1fe4d7d0..69d96b50a70 100644 --- a/_maps/RandomRuins/SpaceRuins/skyrat/cargodiselost.dmm +++ b/_maps/RandomRuins/SpaceRuins/skyrat/cargodiselost.dmm @@ -996,10 +996,7 @@ /area/ruin/space/has_grav/cargodise_freighter/cargo) "re" = ( /obj/machinery/light/directional/west, -/obj/machinery/computer/cryopod{ - dir = 4; - pixel_x = -24 - }, +/obj/machinery/computer/cryopod/directional/west, /obj/effect/turf_decal/tile/green/half/contrasted{ dir = 8 }, diff --git a/_maps/RandomRuins/SpaceRuins/skyrat/interdynefob.dmm b/_maps/RandomRuins/SpaceRuins/skyrat/interdynefob.dmm index f8a26941cbf..d02564d8584 100644 --- a/_maps/RandomRuins/SpaceRuins/skyrat/interdynefob.dmm +++ b/_maps/RandomRuins/SpaceRuins/skyrat/interdynefob.dmm @@ -3695,10 +3695,7 @@ /turf/open/floor/engine, /area/ruin/space/has_grav/skyrat/interdynefob/engineering) "ps" = ( -/obj/machinery/computer/cryopod/interdyne{ - dir = 4; - pixel_x = -24 - }, +/obj/machinery/computer/cryopod/interdyne/directional/west, /obj/structure/table, /obj/effect/turf_decal/trimline/dark_green/filled/line{ dir = 8 @@ -9292,10 +9289,7 @@ color = "#00ff00"; name = "green" }, -/obj/machinery/computer/cryopod/interdyne{ - dir = 8; - pixel_x = 24 - }, +/obj/machinery/computer/cryopod/interdyne/directional/east, /turf/open/floor/mineral/plastitanium/red, /area/ruin/space/has_grav/skyrat/interdynefob/security/prison) "OU" = ( diff --git a/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon2.dmm b/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon2.dmm index 7ada6b20977..d7907be3596 100644 --- a/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon2.dmm +++ b/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon2.dmm @@ -8734,10 +8734,7 @@ /turf/open/floor/iron, /area/ruin/space/has_grav/port_tarkon/starboardhall) "Wn" = ( -/obj/machinery/computer/cryopod/tarkon{ - dir = 4; - pixel_x = -24 - }, +/obj/machinery/computer/cryopod/tarkon/directional/west, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/decal/cleanable/dirt/dust, diff --git a/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon3.dmm b/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon3.dmm index 6cfec6e3b80..cb6a73bd395 100644 --- a/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon3.dmm +++ b/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon3.dmm @@ -8318,10 +8318,7 @@ "Wn" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/obj/machinery/computer/cryopod/tarkon{ - dir = 4; - pixel_x = -24 - }, +/obj/machinery/computer/cryopod/tarkon/directional/west, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, diff --git a/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon4.dmm b/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon4.dmm index 3002f0d28e6..99c06c71608 100644 --- a/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon4.dmm +++ b/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon4.dmm @@ -7378,10 +7378,7 @@ /turf/open/floor/iron, /area/ruin/space/has_grav/port_tarkon/secoff) "Wn" = ( -/obj/machinery/computer/cryopod/tarkon{ - dir = 4; - pixel_x = -24 - }, +/obj/machinery/computer/cryopod/tarkon/directional/west, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/decal/cleanable/dirt/dust, diff --git a/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon5.dmm b/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon5.dmm index 5df8f47e976..3065c970a32 100644 --- a/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon5.dmm +++ b/_maps/RandomRuins/SpaceRuins/skyrat/port_tarkon/defcon5.dmm @@ -8118,10 +8118,7 @@ "Wn" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/computer/cryopod/tarkon{ - dir = 4; - pixel_x = -24 - }, +/obj/machinery/computer/cryopod/tarkon/directional/west, /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/iron, /area/ruin/space/has_grav/port_tarkon/centerhall) diff --git a/_maps/RandomRuins/SpaceRuins/spacehotel_skyrat.dmm b/_maps/RandomRuins/SpaceRuins/spacehotel_skyrat.dmm index a5814b7a4e4..4420e429314 100644 --- a/_maps/RandomRuins/SpaceRuins/spacehotel_skyrat.dmm +++ b/_maps/RandomRuins/SpaceRuins/spacehotel_skyrat.dmm @@ -4985,9 +4985,7 @@ /turf/open/floor/iron/white, /area/ruin/space/has_grav/hotel) "BT" = ( -/obj/machinery/computer/cryopod{ - pixel_y = 23 - }, +/obj/machinery/computer/cryopod/directional/north, /obj/effect/turf_decal/tile/dark/opposingcorners, /turf/open/floor/iron, /area/ruin/space/has_grav/hotel/bar) diff --git a/_maps/map_files/VoidRaptor/VoidRaptor.dmm b/_maps/map_files/VoidRaptor/VoidRaptor.dmm index ad7bbeda8f6..976ca4b0bb4 100644 --- a/_maps/map_files/VoidRaptor/VoidRaptor.dmm +++ b/_maps/map_files/VoidRaptor/VoidRaptor.dmm @@ -9984,10 +9984,7 @@ /turf/open/floor/catwalk_floor/iron_smooth, /area/station/maintenance/starboard/lesser) "cYZ" = ( -/obj/machinery/computer/cryopod{ - dir = 8; - pixel_x = 32 - }, +/obj/machinery/computer/cryopod/directional/east, /obj/machinery/light/warm/directional/east, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -44187,10 +44184,7 @@ /obj/machinery/cryopod{ dir = 4 }, -/obj/machinery/computer/cryopod{ - dir = 4; - pixel_x = -24 - }, +/obj/machinery/computer/cryopod/directional/west, /obj/effect/turf_decal/delivery/white{ color = "#00ff00" }, diff --git a/_maps/map_files/generic/CentCom_skyrat_z2.dmm b/_maps/map_files/generic/CentCom_skyrat_z2.dmm index cae7b71b1d0..c01f9b0d5e8 100644 --- a/_maps/map_files/generic/CentCom_skyrat_z2.dmm +++ b/_maps/map_files/generic/CentCom_skyrat_z2.dmm @@ -4874,9 +4874,7 @@ /turf/open/floor/iron, /area/centcom/interlink) "bNi" = ( -/obj/machinery/computer/cryopod{ - pixel_x = -32 - }, +/obj/machinery/computer/cryopod/directional/west, /obj/machinery/cryopod/quiet{ dir = 1 }, @@ -9301,9 +9299,7 @@ /turf/open/floor/iron, /area/centcom/interlink) "nqQ" = ( -/obj/machinery/computer/cryopod{ - pixel_y = 32 - }, +/obj/machinery/computer/cryopod/directional/north, /obj/effect/landmark/latejoin, /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 diff --git a/_maps/skyrat/automapper/templates/deltastation/deltastation_cryo.dmm b/_maps/skyrat/automapper/templates/deltastation/deltastation_cryo.dmm index 841b4a8df4c..00478d5dbe6 100644 --- a/_maps/skyrat/automapper/templates/deltastation/deltastation_cryo.dmm +++ b/_maps/skyrat/automapper/templates/deltastation/deltastation_cryo.dmm @@ -3,10 +3,7 @@ /turf/closed/wall, /area/station/commons/fitness/recreation) "e" = ( -/obj/machinery/computer/cryopod{ - dir = 8; - pixel_x = 32 - }, +/obj/machinery/computer/cryopod/directional/east, /obj/machinery/light/directional/east, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 diff --git a/_maps/skyrat/automapper/templates/icebox/icebox_cryo.dmm b/_maps/skyrat/automapper/templates/icebox/icebox_cryo.dmm index e5476e58afd..7e5289b21a5 100644 --- a/_maps/skyrat/automapper/templates/icebox/icebox_cryo.dmm +++ b/_maps/skyrat/automapper/templates/icebox/icebox_cryo.dmm @@ -33,9 +33,7 @@ /turf/open/floor/iron/dark, /area/station/common/cryopods) "k" = ( -/obj/machinery/computer/cryopod{ - pixel_y = 32 - }, +/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, diff --git a/_maps/skyrat/automapper/templates/kilostation/kilostation_cryo.dmm b/_maps/skyrat/automapper/templates/kilostation/kilostation_cryo.dmm index df731d4539a..18b8f1140b5 100644 --- a/_maps/skyrat/automapper/templates/kilostation/kilostation_cryo.dmm +++ b/_maps/skyrat/automapper/templates/kilostation/kilostation_cryo.dmm @@ -33,10 +33,7 @@ /turf/open/floor/iron, /area/station/common/cryopods) "j" = ( -/obj/machinery/computer/cryopod{ - dir = 8; - pixel_x = 32 - }, +/obj/machinery/computer/cryopod/directional/east, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/common/cryopods) diff --git a/_maps/skyrat/automapper/templates/metastation/metastation_cryo.dmm b/_maps/skyrat/automapper/templates/metastation/metastation_cryo.dmm index 86112ecd36e..77308b7d89d 100644 --- a/_maps/skyrat/automapper/templates/metastation/metastation_cryo.dmm +++ b/_maps/skyrat/automapper/templates/metastation/metastation_cryo.dmm @@ -23,9 +23,7 @@ /area/station/common/cryopods) "v" = ( /obj/structure/cable, -/obj/machinery/computer/cryopod{ - pixel_y = 32 - }, +/obj/machinery/computer/cryopod/directional/north, /obj/machinery/light/directional/north, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, diff --git a/_maps/skyrat/automapper/templates/tramstation/tramstation_cryo.dmm b/_maps/skyrat/automapper/templates/tramstation/tramstation_cryo.dmm index 975a87635e2..68f866996fa 100644 --- a/_maps/skyrat/automapper/templates/tramstation/tramstation_cryo.dmm +++ b/_maps/skyrat/automapper/templates/tramstation/tramstation_cryo.dmm @@ -294,10 +294,7 @@ /obj/machinery/cryopod{ dir = 4 }, -/obj/machinery/computer/cryopod{ - dir = 4; - pixel_x = -32 - }, +/obj/machinery/computer/cryopod/directional/west, /turf/open/floor/iron/dark, /area/station/common/cryopods) "O" = ( diff --git a/modular_skyrat/modules/automapper/code/area_spawn_entries.dm b/modular_skyrat/modules/automapper/code/area_spawn_entries.dm index a31811fc8bf..95332317e36 100644 --- a/modular_skyrat/modules/automapper/code/area_spawn_entries.dm +++ b/modular_skyrat/modules/automapper/code/area_spawn_entries.dm @@ -56,6 +56,17 @@ desired_atom = /obj/machinery/posialert mode = AREA_SPAWN_MODE_MOUNT_WALL +/datum/area_spawn/prison_cryo_console + // Keep to one area so it's in the same area as the pods, which is required. + target_areas = list(/area/station/security/prison) + desired_atom = /obj/machinery/computer/cryopod + mode = AREA_SPAWN_MODE_MOUNT_WALL + +/datum/area_spawn/prison_cryopod + target_areas = list(/area/station/security/prison) + desired_atom = /obj/machinery/cryopod/prison + mode = AREA_SPAWN_MODE_MOUNT_WALL + // Job spawners /datum/area_spawn/secmed_landmark target_areas = list(/area/station/security/medical, /area/station/security/brig) diff --git a/modular_skyrat/modules/cryosleep/code/cryopod.dm b/modular_skyrat/modules/cryosleep/code/cryopod.dm index 202fea304a9..697a358dd2e 100644 --- a/modular_skyrat/modules/cryosleep/code/cryopod.dm +++ b/modular_skyrat/modules/cryosleep/code/cryopod.dm @@ -40,6 +40,7 @@ GLOBAL_LIST_EMPTY(valid_cryopods) /// 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) . = ..() @@ -134,11 +135,13 @@ GLOBAL_LIST_EMPTY(valid_cryopods) desc = "Suited for Cyborgs and Humanoids, the pod is a safe place for personnel affected by the Space Sleep Disorder to get some rest." icon = 'modular_skyrat/modules/cryosleep/icons/cryogenics.dmi' icon_state = "cryopod-open" + base_icon_state = "cryopod" use_power = FALSE density = TRUE anchored = TRUE state_open = TRUE + var/open_icon_state = "cryopod-open" var/on_store_message = "has entered long-term storage." var/on_store_name = "Cryogenic Oversight" /// Whether the cryopod respects the minimum time someone has to be disconnected before they can be put into cryo by another player @@ -209,11 +212,9 @@ GLOBAL_LIST_EMPTY(valid_cryopods) stored_ckey = mob_occupant.ckey COOLDOWN_START(src, despawn_world_time, time_till_despawn) - icon_state = "cryopod" /obj/machinery/cryopod/open_machine() ..() - icon_state = "cryopod-open" set_density(TRUE) name = initial(name) tucked = FALSE @@ -510,6 +511,28 @@ GLOBAL_LIST_EMPTY(valid_cryopods) user.add_mood_event("tucked", /datum/mood_event/tucked_in, occupant) tucked = TRUE +/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/set_density(new_value) + // Simple way to make it always non-dense. + return ..(FALSE) + +/obj/machinery/cryopod/prison/close_machine(atom/movable/target) + . = ..() + // Flick the pod for a second when user enters + flick("prisonpod-open", src) + // Wake-up notifications /obj/effect/mob_spawn/ghost_role diff --git a/modular_skyrat/modules/cryosleep/icons/cryogenics.dmi b/modular_skyrat/modules/cryosleep/icons/cryogenics.dmi index d76bec4de6a..9b7ff616aaf 100644 Binary files a/modular_skyrat/modules/cryosleep/icons/cryogenics.dmi and b/modular_skyrat/modules/cryosleep/icons/cryogenics.dmi differ diff --git a/modular_skyrat/modules/mapping/code/mob_spawns.dm b/modular_skyrat/modules/mapping/code/mob_spawns.dm index 4cabfbbd71f..1808d6297ca 100644 --- a/modular_skyrat/modules/mapping/code/mob_spawns.dm +++ b/modular_skyrat/modules/mapping/code/mob_spawns.dm @@ -693,7 +693,11 @@ announcement_channel = RADIO_CHANNEL_INTERDYNE req_one_access = list("syndicate_leader") +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/cryopod/interdyne, 32) + /obj/machinery/computer/cryopod/tarkon radio = /obj/item/radio/headset/tarkon announcement_channel = RADIO_CHANNEL_TARKON req_one_access = list("tarkon") + +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/computer/cryopod/tarkon, 32) diff --git a/tools/UpdatePaths/Scripts_Skyrat/cryo_console_dirs.txt b/tools/UpdatePaths/Scripts_Skyrat/cryo_console_dirs.txt new file mode 100644 index 00000000000..61e6a384e73 --- /dev/null +++ b/tools/UpdatePaths/Scripts_Skyrat/cryo_console_dirs.txt @@ -0,0 +1,4 @@ +/obj/machinery/computer/cryopod{pixel_x = 32} : /obj/machinery/computer/cryopod/directional/east +/obj/machinery/computer/cryopod{pixel_x = -32} : /obj/machinery/computer/cryopod/directional/west +/obj/machinery/computer/cryopod{pixel_y = 32} : /obj/machinery/computer/cryopod/directional/north +/obj/machinery/computer/cryopod{pixel_y = -32} : /obj/machinery/computer/cryopod/directional/south