diff --git a/_maps/map_files/DreamStation/dreamstation04.dmm b/_maps/map_files/DreamStation/dreamstation04.dmm
index 8b09fa8f0f0..737327d1b0c 100644
--- a/_maps/map_files/DreamStation/dreamstation04.dmm
+++ b/_maps/map_files/DreamStation/dreamstation04.dmm
@@ -382,7 +382,7 @@
"ahr" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/floor/plasteel/shuttle,/area/shuttle/arrival)
"ahs" = (/obj/structure/table,/obj/item/weapon/screwdriver,/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/abandoned)
"aht" = (/turf/simulated/wall/r_wall,/area/hallway/secondary/entry)
-"ahu" = (/obj/machinery/door/airlock/shuttle,/obj/docking_port/mobile{dheight = 0; dir = 1; dwidth = 11; height = 22; id = "whiteship"; name = "NT Medical Ship"; roundstart_move = "whiteship_away"; travelDir = 180; width = 35},/obj/docking_port/stationary{dir = 1; dwidth = 11; height = 22; id = "whiteship_home"; name = "SS13 Arrival Docking"; width = 35},/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/abandoned)
+"ahu" = (/obj/machinery/door/airlock/shuttle,/obj/docking_port/mobile{dheight = 0; dir = 1; dwidth = 11; height = 22; id = "whiteship"; launch_status = 0; name = "NT Medical Ship"; roundstart_move = "whiteship_away"; travelDir = 180; width = 35},/obj/docking_port/stationary{dir = 1; dwidth = 11; height = 22; id = "whiteship_home"; name = "SS13 Arrival Docking"; width = 35},/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/abandoned)
"ahv" = (/turf/simulated/wall,/area/hallway/secondary/entry)
"ahw" = (/obj/effect/spawner/structure/window/reinforced,/turf/simulated/floor/plating,/area/hallway/secondary/entry)
"ahx" = (/turf/simulated/wall/shuttle{icon_state = "swall13"; dir = 2},/area/shuttle/arrival)
@@ -2234,7 +2234,7 @@
"aQX" = (/obj/machinery/atmospherics/pipe/simple/green/visible{tag = "icon-intact (SOUTHWEST)"; icon_state = "intact"; dir = 10; initialize_directions = 12},/obj/machinery/computer/atmos_control/tank{frequency = 1441; input_tag = "o2_in"; name = "Oxygen Supply Control"; output_tag = "o2_out"; sensors = list("o2_sensor" = "Tank")},/turf/simulated/floor/plasteel{dir = 1; icon_state = "blue"},/area/atmos)
"aQY" = (/obj/machinery/atmospherics/pipe/manifold/cyan/visible{dir = 8; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 5; icon_state = "blue"},/area/atmos)
"aQZ" = (/obj/machinery/atmospherics/components/trinary/mixer{node1_concentration = 0.8; node2_concentration = 0.2},/turf/simulated/floor/plasteel/barber,/area/atmos)
-"aRa" = (/obj/machinery/computer/atmos_control/tank{frequency = 1441; input_tag = "air_in"; name = "Mixed Air Supply Control"; output_tag = "air_out"; sensors = list("air_sensor" = "Tank")},/obj/machinery/light,/turf/simulated/floor/plasteel/barber,/area/atmos)
+"aRa" = (/obj/machinery/computer/atmos_control/tank{frequency = 1441; input_tag = "air_in"; name = "Mixed Air Supply Control"; output_tag = "air_out"; sensors = list("air_sensor" = "Tank")},/obj/machinery/light,/turf/simulated/floor/plasteel/barber,/area/atmos)
"aRb" = (/obj/machinery/atmospherics/components/binary/pump{dir = 1; name = "Air Outlet Pump"; on = 1},/turf/simulated/floor/plasteel/barber,/area/atmos)
"aRc" = (/obj/machinery/atmospherics/pipe/simple/green/visible,/turf/simulated/floor/plasteel,/area/atmos)
"aRd" = (/obj/structure/cable/green{tag = "icon-1-2"; icon_state = "1-2"},/turf/simulated/floor/plating{burnt = 1; icon_state = "panelscorched"},/area/maintenance/atmos_control)
diff --git a/_maps/map_files/MetaStation/MetaStation.v41I.dmm b/_maps/map_files/MetaStation/MetaStation.v41I.dmm
index 608d532d754..4e761307eae 100644
--- a/_maps/map_files/MetaStation/MetaStation.v41I.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.v41I.dmm
@@ -5586,7 +5586,7 @@
"cdv" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/components/binary/pump{dir = 1; name = "O2 to Airmix"; on = 1},/obj/machinery/atmospherics/pipe/simple/green/visible{dir = 4},/turf/simulated/floor/plasteel{icon_state = "bluefull"},/area/atmos)
"cdw" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/machinery/door/window/northleft{dir = 1; icon_state = "left"; name = "Inner Pipe Access"; req_access_txt = "24"},/obj/machinery/atmospherics/components/binary/pump{dir = 1; name = "O2 to Pure"},/obj/machinery/atmospherics/pipe/simple/green/visible{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/atmos)
"cdx" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/cyan/visible,/obj/machinery/atmospherics/pipe/simple/green/visible{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/atmos)
-"cdy" = (/obj/structure/window/reinforced,/obj/machinery/computer/atmos_control/tank{frequency = 1441; input_tag = "air_in"; name = "Mixed Air Supply Control"; output_tag = "air_out"; sensors = list("air_sensor" = "Tank")},/obj/machinery/atmospherics/pipe/simple/green/visible{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/atmos)
+"cdy" = (/obj/docking_port/mobile{dheight = 0; dir = 2; dwidth = 11; height = 15; id = "whiteship"; launch_status = 0; name = "NT Recovery White-Ship"; roundstart_move = "whiteship_away"; travelDir = 180; width = 27},/obj/machinery/door/airlock/shuttle{name = "recovery shuttle external airlock"},/obj/effect/decal/cleanable/dirt{desc = "A thin layer of dust coating the floor."; name = "dust"},/obj/docking_port/stationary{dir = 2; dwidth = 11; height = 15; id = "whiteship_home"; name = "SS13: Auxiliary Dock, Station-Port"; width = 27},/turf/simulated/floor/plasteel/shuttle,/area/shuttle/abandoned)
"cdz" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/components/binary/pump{dir = 1; name = "Air to Pure"},/obj/machinery/atmospherics/pipe/simple/green/visible{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/atmos)
"cdA" = (/obj/structure/window/reinforced{dir = 4; pixel_x = 0},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/green/visible{dir = 9},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/atmos)
"cdB" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
@@ -8087,7 +8087,7 @@
"cZA" = (/obj/structure/grille,/obj/structure/window/shuttle,/turf/simulated/floor/plating,/area/shuttle/abandoned)
"cZB" = (/turf/simulated/wall/shuttle{icon_state = "swallc1"; dir = 2},/area/shuttle/abandoned)
"cZC" = (/obj/machinery/door/airlock/shuttle{name = "recovery shuttle external airlock"},/obj/effect/decal/cleanable/dirt{desc = "A thin layer of dust coating the floor."; name = "dust"},/turf/simulated/floor/plasteel/shuttle,/area/shuttle/abandoned)
-"cZD" = (/obj/docking_port/mobile{dheight = 0; dir = 2; dwidth = 11; height = 15; id = "whiteship"; name = "NT Recovery White-Ship"; roundstart_move = "whiteship_away"; travelDir = 180; width = 27},/obj/machinery/door/airlock/shuttle{name = "recovery shuttle external airlock"},/obj/effect/decal/cleanable/dirt{desc = "A thin layer of dust coating the floor."; name = "dust"},/obj/docking_port/stationary{dir = 2; dwidth = 11; height = 15; id = "whiteship_home"; name = "SS13: Auxiliary Dock, Station-Port"; width = 27},/turf/simulated/floor/plasteel/shuttle,/area/shuttle/abandoned)
+"cZD" = (/obj/structure/window/reinforced,/obj/machinery/computer/atmos_control/tank{frequency = 1441; input_tag = "air_in"; name = "Mixed Air Supply Control"; output_tag = "air_out"; sensors = list("air_sensor" = "Tank")},/obj/machinery/atmospherics/pipe/simple/green/visible{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "barber"},/area/atmos)
"cZE" = (/turf/simulated/wall/shuttle{icon_state = "swallc2"; dir = 2},/area/shuttle/abandoned)
"cZF" = (/turf/simulated/wall/shuttle{icon_state = "swall_s10"; dir = 2},/area/shuttle/abandoned)
"cZG" = (/turf/simulated/wall/shuttle{icon_state = "swall13"; dir = 2},/area/shuttle/abandoned)
@@ -8537,13 +8537,13 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaYoaYobQpbQpaYoaYoaYoaSJaYoaSJaYoaSJaSJalQbQqalQalQalQbdpaqWapIbBBbOPbZibQsbDkbQsbQtbBBbQuapFaojapHbQvanaalQbBGalIbwhbwhbwibQwbQxbwibwhbwhbwhbwhbQybwhbwhbAcbfvbQzbIFbQAbQBdfqbQDbQEbKlbQFbQGbPkcaCbQIbQJbQKbQLbQMbQNbQLbQObQLbQPbQQbQRbPxbQSbNLbQTbQUbQVbQWbQXbQYbITbQZbdKbRaaXBbKAbRbbRcbRdbRebRfbRgbRhbRdbPNbRibMobRjdfrbRlbRmbPSbMobRnbRobRpbRqbRrbRsbMBbRtbRubRvbMBbRwbRxbRybRzbzfbRAbRBbRCbRDbQdbREbRFbEnbOsbRGbRHbRIbLhbLibLjbEFbRJbRKbRLbCVaafaaabBnaaabBmaaabBnaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaobbLtbOFaQaaaaaaaaSHaSHaSHaSHaSIaSHaSHaSHaSHaaaaaaaOrbOFaQaaobaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaYobRMbbyaYoaaaaafaaaaaaaaaaafaaaaaaalQbRObRPbRQbRRbRSbRRbRTbBBbBBbBBbBBbRUbBBbBBbBBbRVaqSalIaojbRWbRXalQbRYbRZbwhbSabSbbScbSdbSebSfbSgbwhbShbSibSjbwhbwmbcfbSkbIFbLNbPfbSlbSmbLNbKlbSnbSobSpbSqbQIbSrbSsbStbSubSvbSwbSxbSsbSybSzbSAbPxbSBbSCbSDbSEbSFbSGbSHbSIbSJbSKbdKbSLaXBbKAbRbbSMbSNbSNbSObSPbSQbSRbSSbSTbMobSUbRkbSVbSWcbJbMoccRcgFceAchqbARbJsbMBbMBbMBbMBbMBbTcapkapkbTdbzfbRAbRBbRCbTebTfbREbTgbMNbThbRGbMObTibMQbBeaafbBebTjbTkbTlbCVaafaaabBnaaabBmaaabBnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaobaOrbOFaQaaaaaaaaaaaaabxwbxwbTmbxwbxwaaaaaaaaaaaaaOrbOFaQaaobaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaYobQpbQpaYoaafaafaafaafaafaafaafaafalQbToasjasjasjbzXapFapIalIanfauRaoibTpbTqaqWalQalQalQalQalQbTralQalQbBGapHbwhbTsbTtbTubTubSdbTvbTwbwhbTxbTybTzbwhbykbcfbTAbIFbLNbTBbTCbTDbLNbKlbTEbTFbTGbTHbQIbTIbTJbTKbTLbTMbTNbTObTPbTQbTRbTSbPxbTTbTUbTVbTWbNObTXbTXbTYbITbTZbdKbUaaXBbKAbMobUbbUcbUdbNWbUebUfbPLbUgbUhbUibUjbUkbUlbUmciRbMobARbARbARbARbARbUoalwbUpbQaaqzapkbUqaqybUrapkbzfbzfbUsbJBbRDbQdbUtbUubEnbOsbRGbMObUvbOxbIebIfbIgbUwbRKbUxbCVaafaaabBnaaabBmaaabBnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaobaOraPVaQaaaaaaaaaaaaaaaaaaaaPYaaaaaaaaaaaaaaaaaaaOrbOFaQaaobaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZxcZzcZycZAcZzcZAcZycZzcZycZAcZAcZycZBcZDcZCcZEcZycZAcZAcZycZFaaaaaaaaaalQalQalQalQbRXbUzasjbUAciTbUCbUDbUDbUDbUEbUFbUDciTciWbUGbUDbUHbQralIbBGbVFbwhbUJbUKbULbUMbDwbUNbUObwhbwhbwhbwhbwhbUPbcfbKfbIFbIFbUQbUQbURbIFbIHbIJbUSbUTbIJbIJbUUcjIbUWbNIbUUbUUbUUbNIbUYcjIbUUbITbITbITbITbITbITbVabVabVabIUbVbbdKbVcaXBbVdbVebVfbVfbVfbVgbVfbVfbVhbVibVfbVfbVfbVfbMobVjbVkbVlbVmbVnbVoapkclDbVqalwbRybVrbVsapkbVtapkapkanUbzfbVubFXbVvbzgbQdbzgbVwbEnbOsbVxbMObQhbMQbBeaafbCVbCVbCVbCVbCVaafaafbMUaafbLnaafaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaobaOraPVbeuaNiaNiaNiaNiaNiaNibVyaNiaNiaNiaNiaNiaNibnobOFaQaaobaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZxcZzcZycZAcZzcZAcZycZzcZycZAcZAcZycZBcdycZCcZEcZycZAcZAcZycZFaaaaaaaaaalQalQalQalQbRXbUzasjbUAciTbUCbUDbUDbUDbUEbUFbUDciTciWbUGbUDbUHbQralIbBGbVFbwhbUJbUKbULbUMbDwbUNbUObwhbwhbwhbwhbwhbUPbcfbKfbIFbIFbUQbUQbURbIFbIHbIJbUSbUTbIJbIJbUUcjIbUWbNIbUUbUUbUUbNIbUYcjIbUUbITbITbITbITbITbITbVabVabVabIUbVbbdKbVcaXBbVdbVebVfbVfbVfbVgbVfbVfbVhbVibVfbVfbVfbVfbMobVjbVkbVlbVmbVnbVoapkclDbVqalwbRybVrbVsapkbVtapkapkanUbzfbVubFXbVvbzgbQdbzgbVwbEnbOsbVxbMObQhbMQbBeaafbCVbCVbCVbCVbCVaafaafbMUaafbLnaafaaiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaobaOraPVbeuaNiaNiaNiaNiaNiaNibVyaNiaNiaNiaNiaNiaNibnobOFaQaaobaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZHcZGcZJcZIcZLcZKcZNcZMcZKcZOcZPcZPcZRcZQcZTcZScZQcZUcZWcZVcZXcZKaaaaaaaaaaaaaafaaabVzbVzbVAbVBbVCalQbVDalQalQalQaUdbVEbVEbVEbVEbVEbVEbVEbQHbUEbUBbVHbwhbVIbVJbVKbVLbDwbSdbVMbVNbVOauRalQbVPbwmbVQbVRbVSbVTbVUbVUbVUbVVbVWbVXbVUbVUbVYbVZbVSbVSbWabWbbWbbWbbWcbWbbWdbWebWebWfbWgbWhbWibWjbWkbVUbVUbVUbVVbWmbWebWnaXBbWobWpbWqbWrbWsbWtbWubWvbWwbWtbWxbWybWzbWAbMobWBbWCbWDbWEbWFbWGbWHbVqbWIalwalwalwalwalwbWJbWKbzfbzfbzfbWLbFXbJBbWMbWNbWObGbbWPbWQbWRbWSbWTbLhbLibLjbEFbWUbWVbWVbCVaafaaabBnaaabBmaaabBnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaobaVfbWWaOtaOtaOtbggbggcjLcjLcjYcjLcjLbggbggbggbggbggbWYaOxaobaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZZcZYdabdaadaccZKdaedadcZKdafdagcZSdaidahdaidajdaldakdamdamdancZAaaaaaaaaaaaaaafaaabVCbWZbXabXbbVCaojbXcbLAbXdalQbXebVEbXfbXgbXhbXibXjbVEalIbVGalIalIbwhbwhbwhbwhbwhbwhbwhbwhbwhatGalIalQbXkbwmbXlbXmbawbawbawbawbawbawbazbawbXnbXobXpbaybawbawbXqbXrbXsbXtbXubXvbXwbawbawbawbXxbXybawbawbazbawbawbawbawbXzbawbXnbXAbXBbXCbXDbXEbXFbXEbXGbXGbXHbXIbXJbXGbXFbXKbMobMobMobMobXLbXMapjanUbXNbXOapjbXOclGbXQalwauFalwbzfbXRbXSbXTbXUbXVbXWbHVbXWbHXbEnbXXbMNbMObXYbMQbBeaafbBebXZbYabYbbCVaafaaabBnaaabBmaaabBnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaobaaabDfbhYbhYbhYbDfbCXbrkcoWcnfcoWbrnaWEbDfbhYbhYbhYbDfaaaaobaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZZcZYcZKdaodapcZKdardaqcZKdasdatdaidavdaucZSdaidaudawdamdaxdaycZKaaaaaaaaaaaaaafaafbVCbYcbYdbYebVCaojbYfbYgalQalQbYhbVEbYibYjcvCbYlbYmbVEavZbYnbUDbUDciTbUDbUGbUDbYobYpcnYbYpbYpbYqaYQbYrbYsbYtbYubYvbYwbYxbYybYvbYvbYvbYzbYvbYAaZobYBbYCaZoaZobYDbYEbYFbYGbYHbYIbYJaZoaZobYKbYLbYMbYMbYNbYObYNbYNbYNbYPbYQbYRbYSbYTbYUbYVbYWbYXbYYbYZbZabZbbZcbZdbZebZfbZcbZgbVfbZhcovbVfbZjbXMapjapjapjapjapjbZkbZlbZmbZnbZobZpbZqbZrbZsbZtbZubZvbZwbZxbZybZybZybZzbZAbZBbZCbOxbIebIfbIgbZDbWVbZEbCVaafaaabBnaaabBmaaabBnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaobaobaobaobaobaobaobaOrcsabrocpjbrobBzaQaaobaobaobaobaobaobaobaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZZcZEcZGdaadaAdazdaCdaBcZGcZycZBdahdaEdaDdaFdaFdaGdaadaHcZEcZycZGcZAcZAcZFaaaaafaaabVCbZFbZGbZHbVCbZIaojbZJalQbZKbZLbVEbZMbZNbZObZPbZQbVEbVEbVEbVEbVEbVEbZRbVEbVEbZSbZTbZUalIaqSbZVaqWbZWbZWbZWbZWbZWbZWbZWbZXbZXbZXbZXbZXbZYbZZbZZcaacabbZZcacbZZcadcaeaXBcafcagcahcaicahcajcakcahcahcalbVeaXqaXsaXscambVecanbVecaocapcaobVfcaqcarbZdcascatbZcbZdcaucavcawcaxbVfcaycazbVfcaAcaBcqIbZmbZmbZmbZmcaDcaEcaFcaGapkapnbzfcaHbCSbEncaIcaJcaKbLabLacaLbLacaMbOvbMObQhcaNbzfaafbCVbCVbCVbCVbCVaafaaabBnaaabBmaaabBnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaobaaabhYbhYbhYbhYbhYaaaaobaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZxcZAcZJdaIdaidaKdaJdaLdaidaidaMcZKcZSdaidaidaicZSdaidaidaicZKdaOdaNdaQdaPcZAaaaaaiaaabVCcaOcaPcaObVCalQalQalQalQbVEcaQbVEcaRcaScaTcaUcaVbVEcaWcaXcaYbVEcaZcbacbbbVEcbcbVEbVEbVEbVEbVEbVEbZWcbdcbecbfcbgcbhcbibZXcbjcbkcblbZXcbmcbncbmcbocbpcbmcbncbmcbqcbrcbscbtcbucbvcbwcbvcbxcbycbvcbwcbvcbzcbAcbAcbAcbAcbAcbBbVecbCcbDcbEbWqcbFbXFbZdbZfbZfbZccbGbZfbZfbZccbHbVfcbIcrubVfbXLcbKcbLcbLcbLcbMcbLcbLcbNcbOcbPcbQcbQbzfcbRcbSbEncaIbOscbTcbUcbUcbVcbWcbVcbUcbXcbYbMQbzfaafaafaafaafaafaafaafaafbLmaafbLnaafbMUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaobaobaobaobaobaobaobaobaobaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZQdaRcZQdaSdaidaUdaTdaTdaTdaVdaicZQdaidaXdaWdaLdaidaXdaXdaicZQdaYcZSdaidaZcZAaaaaobaaaaaacaOcbZcaOaaaaafaaaaaaaaabVEcaQbVEbVEbVEbVEccabVEbVEccbcccccbbVEbVEbVEbVEbVEccdccebVEccfccgcchcciccjcckcclccmcclccnccoccpccqccrccscctccuccvccwccxccycczccAccBcbnccCccDccEcbwccFccGccHccIccJccKccLccMccNcbAccOccPccQcbActubVeccSccTccUccVccWccXccYccZcdaccXccYccZccZccXcdbcdccddcdecdfcdgbXMapjcdhcdicbQcbQcbQcbQcdjcdkcdlcdmbzfcdncdocdpcdqcdrcdscdtcducdvcdwcdxcdycdzcdAbMQbzfbzfbzfaNjaNiaNjaNiaNjaaabBnaaaaafaaabBnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZQdaRcZQdaSdaidaUdaTdaTdaTdaVdaicZQdaidaXdaWdaLdaidaXdaXdaicZQdaYcZSdaidaZcZAaaaaobaaaaaacaOcbZcaOaaaaafaaaaaaaaabVEcaQbVEbVEbVEbVEccabVEbVEccbcccccbbVEbVEbVEbVEbVEccdccebVEccfccgcchcciccjcckcclccmcclccnccoccpccqccrccscctccuccvccwccxccycczccAccBcbnccCccDccEcbwccFccGccHccIccJccKccLccMccNcbAccOccPccQcbActubVeccSccTccUccVccWccXccYccZcdaccXccYccZccZccXcdbcdccddcdecdfcdgbXMapjcdhcdicbQcbQcbQcbQcdjcdkcdlcdmbzfcdncdocdpcdqcdrcdscdtcducdvcdwcdxcZDcdzcdAbMQbzfbzfbzfaNjaNiaNjaNiaNjaaabBnaaaaafaaabBnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacZCcZSdbacZSdaidbcdbbdbedbddbfcZSdbgdaidbidbhdbkdbjdbmdblcZSdbndaidaidbpdbocZAaaaaaiaafaafcaOcaPcaOaafaafaafaafaafbVEcdBcdCcdDbVEcdEcdFcdGbVEcdHcdIcdJcdKcdLbZQcdMbVEcdNcdOcdPcdQcdRcdScdTcdUcdVcdWcdXcdYcdZceacebbZXceccedceecefcegcehceicejcekcelcemcenccCccDccEceocepceqcercescetceuceucevcevcewcexceycezcbActVbVeceBceCceDbWqceEceFceGceHceIceHceJceHceKceHceLbVfceMceNceOcePcbNalwalwalwcbQceQceRceSceTceUceVceWceXceYceYceZcfacfbcfccfdcfecfbcfbbMQcfccffcfgcfhcficfjcficfkcfkcfkcfkcflaafaaiaaaaafaaabBnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaudbqdaudbrdaidaVdbsdbsdbsdaUdaidaudaidbudbtdaicZSdbudbtdaidaudbvdaLdbxdbwcZAaaaaafaaaaaaaaacfmaaaaaaaafaaaaafaaabVEbVEbVEcaQbVEcfncfocfpcfqcfrcfscftbZQbZQcdGcfubVEcfvcfwbVEcfxcfycfzcfAbZWcfBcfCcfDcfEcfFcfGcfHcfIcfIcfJcfIcfKcfLcfMcfNcfOcemcfPcfQcfRcfScfTcfUceocepcepcepcfVcfWcfXcfYcfZcgacgbcgccgdcgecbAcgfbVebVebVebVebVfbVfcggbVfbVfbVfbVfbVfbVfbVfbVfbVfbVfbVfbVfbVfcghcgialwcgjcgkcbQcglcgmcgncgocgpcgqcgrbzfbzfbzfcgsbBecgtbBecgsbBecgtcgtcgubBecgubzfbzfbzfbzfbzfbDfbhZcfkaWEbDfaaabBnaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadbycZAcZJdbzdaidaidaidaidaidaidaicZKdaidaidbAdaidaidaidaidaicZKdbCdbBdbEdbDcZAaaaaafaafaafaaacgvaaaaaaaafaaaacnacncgwcgxbVEcgycgzcgAbVEbVEbVEcgBcgCbZQcgDcgEbVEbVEbVEcuqcgGbVEcgHcgHcgHcgHcgHcgHcgHcgIcfEcgJcgKcgLcfIcgMcgNcBQcgPcgQcgRcgScgTcgUcgVcgWcbmccCcgXccEcbvcgYcgZchachbchcchdchechfchgcbAchhchichjcbAchkchlchlchlchmchlchnchochpchlchlcuschlchlchlcuSchrchschtchubZmchvchwchxchybRxcbQchzcgmchAchBchCchDchEchFaafaafchGaafchHaafchGaafchIchJchKaafchKaafaafaafaafaafaafaVfcfkaOxaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/_maps/map_files/TgStation/tgstation.2.1.3.dmm b/_maps/map_files/TgStation/tgstation.2.1.3.dmm
index fdb4d591514..6d0134872f5 100644
--- a/_maps/map_files/TgStation/tgstation.2.1.3.dmm
+++ b/_maps/map_files/TgStation/tgstation.2.1.3.dmm
@@ -6657,7 +6657,7 @@
"cya" = (/turf/simulated/wall/shuttle{icon_state = "swall_s6"; dir = 2},/area/shuttle/abandoned)
"cyb" = (/turf/simulated/wall/shuttle{icon_state = "swall_s10"; dir = 2},/area/shuttle/abandoned)
"cyc" = (/turf/simulated/wall/shuttle{icon_state = "swall12"; dir = 2},/area/shuttle/abandoned)
-"cyd" = (/obj/machinery/door/airlock/shuttle,/obj/docking_port/mobile{dheight = 0; dir = 2; dwidth = 11; height = 22; id = "whiteship"; name = "NT Medical Ship"; roundstart_move = "whiteship_away"; travelDir = 180; width = 35},/obj/docking_port/stationary{dir = 2; dwidth = 11; height = 22; id = "whiteship_home"; name = "SS13 Arrival Docking"; width = 35},/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/abandoned)
+"cyd" = (/obj/machinery/door/airlock/shuttle,/obj/docking_port/mobile{dheight = 0; dir = 2; dwidth = 11; height = 22; id = "whiteship"; launch_status = 0; name = "NT Medical Ship"; roundstart_move = "whiteship_away"; travelDir = 180; width = 35},/obj/docking_port/stationary{dir = 2; dwidth = 11; height = 22; id = "whiteship_home"; name = "SS13 Arrival Docking"; width = 35},/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/abandoned)
"cye" = (/obj/machinery/door/airlock/shuttle,/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/shuttle/abandoned)
"cyf" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 4},/turf/simulated/floor/plating/airless,/area/shuttle/abandoned)
"cyg" = (/turf/simulated/wall/shuttle{icon_state = "swall13"; dir = 2},/area/shuttle/abandoned)
diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm
index fcd2be43b5b..f876e460b28 100644
--- a/code/__DEFINES/misc.dm
+++ b/code/__DEFINES/misc.dm
@@ -350,3 +350,9 @@ var/list/bloody_footprints_cache = list()
// Consider these images/atoms as part of the UI/HUD
#define APPEARANCE_UI_IGNORE_ALPHA RESET_COLOR|RESET_TRANSFORM|NO_CLIENT_COLOR|RESET_ALPHA
#define APPEARANCE_UI RESET_COLOR|RESET_TRANSFORM|NO_CLIENT_COLOR
+
+//Launching Shuttles to Centcomm
+#define NOLAUNCH -1
+#define UNLAUNCHED 0
+#define ENDGAME_LAUNCHED 1
+#define EARLY_LAUNCHED 2
diff --git a/code/controllers/subsystem/shuttles/emergency.dm b/code/controllers/subsystem/shuttles/emergency.dm
index 959262460a5..f798b68ea24 100644
--- a/code/controllers/subsystem/shuttles/emergency.dm
+++ b/code/controllers/subsystem/shuttles/emergency.dm
@@ -1,7 +1,3 @@
-#define UNLAUNCHED 0
-#define ENDGAME_LAUNCHED 1
-#define EARLY_LAUNCHED 2
-
/obj/docking_port/mobile/emergency
name = "emergency shuttle"
id = "emergency"
@@ -119,24 +115,32 @@
mode = SHUTTLE_STRANDED
if(time_left <= 0 && !SSshuttle.emergencyNoEscape)
- //move each escape pod to its corresponding transit dock
- for(var/obj/docking_port/mobile/pod/M in SSshuttle.mobile)
- if(M.launch_status == UNLAUNCHED) //Will not launch from the mine/planet
+ //move each escape pod (or applicable spaceship) to its corresponding transit dock
+ for(var/A in SSshuttle.mobile)
+ var/obj/docking_port/mobile/M = A
+ if(M.launch_status == UNLAUNCHED) //Pods will not launch from the mine/planet, and other ships won't launch unless we tell them to.
M.launch_status = ENDGAME_LAUNCHED
M.enterTransit()
+
//now move the actual emergency shuttle to its transit dock
for(var/area/shuttle/escape/E in world)
E << 'sound/effects/hyperspace_progress.ogg'
enterTransit()
mode = SHUTTLE_ESCAPE
+ launch_status = ENDGAME_LAUNCHED
timer = world.time
priority_announce("The Emergency Shuttle has left the station. Estimate [timeLeft(600)] minutes until the shuttle docks at Central Command.", null, null, "Priority")
if(SHUTTLE_ESCAPE)
if(time_left <= 0)
//move each escape pod to its corresponding escape dock
- for(var/obj/docking_port/mobile/pod/M in SSshuttle.mobile)
+ for(var/A in SSshuttle.mobile)
+ var/obj/docking_port/mobile/M = A
if(M.launch_status == ENDGAME_LAUNCHED)
- M.dock(SSshuttle.getDock("[M.id]_away"))
+ if(istype(M, /obj/docking_port/mobile/pod))
+ M.dock(SSshuttle.getDock("[M.id]_away")) //Escape pods dock at centcomm
+ else
+ continue //Mapping a new docking point for each ship mappers could potentially want docking with centcomm would take up lots of space, just let them keep flying off into the sunset for their greentext
+
//now move the actual emergency shuttle to centcomm
for(var/area/shuttle/escape/E in world)
E << 'sound/effects/hyperspace_end.ogg'
@@ -158,7 +162,7 @@
dwidth = 1
width = 3
height = 4
- var/launch_status = UNLAUNCHED
+ launch_status = UNLAUNCHED
/obj/docking_port/mobile/pod/request()
if((security_level == SEC_LEVEL_RED || security_level == SEC_LEVEL_DELTA) && launch_status == UNLAUNCHED)
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index 1da001b3fff..16104e671f3 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -27,9 +27,9 @@
return 0
//check for centcomm shuttles
- for(var/centcom_shuttle in list("emergency", "pod1", "pod2", "pod3", "pod4", "ferry"))
- var/obj/docking_port/mobile/M = SSshuttle.getShuttle(centcom_shuttle)
- if(T in M.areaInstance)
+ for(var/A in SSshuttle.mobile)
+ var/obj/docking_port/mobile/M = A
+ if(M.launch_status == ENDGAME_LAUNCHED && T in M.areaInstance)
return 1
//finally check for centcom itself
diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm
index a851e59cab4..898bf2d306e 100644
--- a/code/modules/shuttle/shuttle.dm
+++ b/code/modules/shuttle/shuttle.dm
@@ -176,6 +176,8 @@
var/obj/docking_port/stationary/destination
var/obj/docking_port/stationary/previous
+ var/launch_status = NOLAUNCH
+
/obj/docking_port/mobile/New()
..()
SSshuttle.mobile += src
@@ -584,8 +586,11 @@
return
if(href_list["move"])
+ var/obj/docking_port/mobile/M = SSshuttle.getShuttle(shuttleId)
+ if(M.launch_status == ENDGAME_LAUNCHED)
+ usr << "You've already escaped. Never going back to that place again!"
+ return
if(no_destination_swap)
- var/obj/docking_port/mobile/M = SSshuttle.getShuttle(shuttleId)
if(M.mode != SHUTTLE_IDLE)
usr << "Shuttle already in transit."
return