diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm
index 9efa4fc4705..6c2177b408a 100644
--- a/_maps/map_files/cyberiad/cyberiad.dmm
+++ b/_maps/map_files/cyberiad/cyberiad.dmm
@@ -2585,18 +2585,18 @@
"aXK" = (/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = 30},/turf/simulated/floor,/area/hallway/primary/central/nw)
"aXL" = (/obj/machinery/camera{c_tag = "Central Hallway North-West"; dir = 2; network = list("SS13")},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor,/area/hallway/primary/central/nw)
"aXM" = (/obj/machinery/light{dir = 1},/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor,/area/hallway/primary/central/nw)
-"aXN" = (/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Central Hall NW APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor,/area/hallway/primary/central/nw)
+"aXN" = (/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Central Hall NW APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/hallway/primary/central/nw)
"aXO" = (/turf/simulated/floor{dir = 4; icon_state = "bluecorner"},/area/hallway/primary/central/nw)
"aXP" = (/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/hallway/primary/central/nw)
"aXQ" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "station intercom (General)"; pixel_y = 25},/obj/machinery/door/firedoor,/turf/simulated/floor{dir = 1; icon_state = "bluecorner"},/area/hallway/primary/central/nw)
-"aXR" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "L1"},/area/hallway/primary/central/north)
+"aXR" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor,/area/hallway/primary/central/north)
"aXS" = (/turf/simulated/floor{icon_state = "L3"},/area/hallway/primary/central/north)
"aXT" = (/turf/simulated/floor{icon_state = "L5"},/area/hallway/primary/central/north)
"aXU" = (/turf/simulated/floor{icon_state = "L7"},/area/hallway/primary/central/north)
"aXV" = (/turf/simulated/floor{icon_state = "L9"},/area/hallway/primary/central/north)
-"aXW" = (/turf/simulated/floor{icon_state = "L11"},/area/hallway/primary/central/north)
-"aXX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{desc = ""; icon_state = "L13"; name = "floor"},/area/hallway/primary/central/north)
-"aXY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "L15"},/area/hallway/primary/central/north)
+"aXW" = (/turf/simulated/floor{icon_state = "L1"},/area/hallway/primary/central/north)
+"aXX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "L11"},/area/hallway/primary/central/north)
+"aXY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{desc = ""; icon_state = "L13"; name = "floor"},/area/hallway/primary/central/north)
"aXZ" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor,/area/hallway/primary/central/north)
"aYa" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "station intercom (General)"; pixel_y = 25},/obj/machinery/light{dir = 1},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/central/ne)
"aYb" = (/turf/simulated/floor{icon_state = "neutralcorner"; dir = 4},/area/hallway/primary/central/ne)
@@ -2683,12 +2683,11 @@
"aZE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/central/nw)
"aZF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "L2"},/area/hallway/primary/central/north)
"aZG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "L4"},/area/hallway/primary/central/north)
-"aZH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "L6"},/area/hallway/primary/central/north)
-"aZI" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=Lockers"; location = "EVA"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "L8"},/area/hallway/primary/central/north)
-"aZJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "L10"},/area/hallway/primary/central/north)
-"aZK" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=Security"; location = "EVA2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "L12"},/area/hallway/primary/central/north)
-"aZL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{desc = ""; icon_state = "L14"},/area/hallway/primary/central/north)
-"aZM" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/turf/simulated/floor{icon_state = "L16"},/area/hallway/primary/central/north)
+"aZH" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "L8"},/area/hallway/primary/central/north)
+"aZI" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=Lockers"; location = "EVA"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "L6"},/area/hallway/primary/central/north)
+"aZJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "L12"},/area/hallway/primary/central/north)
+"aZK" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=Security"; location = "EVA2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{icon_state = "L10"},/area/hallway/primary/central/north)
+"aZL" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/turf/simulated/floor{desc = ""; icon_state = "L14"},/area/hallway/primary/central/north)
"aZN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/hallway/primary/central/north)
"aZO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor,/area/hallway/primary/central/ne)
"aZP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor,/area/hallway/primary/central/ne)
@@ -8349,8 +8348,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSfaOFaOFaNjaOMaQjaOFaQjaSgaQjaOFaQjaOMaQkaQlaKzaKBaShaMoaMoaSiaSjaSkaSjaMoaKHaKHaKHaKHaSlaSmaSnaSoaKHaSpaSqaSraPdaPdaSsaPdaStaSuaSvaMvaaaaLRaLRaSwaSxaSwaLRaLRaaaaJGaJLaJMaSyaSzaSAaQJaSBaJMaGvaIKaJNaJOaSCaNRaLXaJOaLYaJOaLXaNTaSDaIKaIKaIKaSEaSFaSGaSHaSIaSJamKamKaSKaSLaSMaSNaMcaSOaMQaMcaSPaMcaSQaMcaSRaSSaSTaSUaSVaSWaSXaSYaSZaTaaTbaTcaTdaTbaTbaTeaTbaSYaTfaSYaOvaTgaSYaThaTiaTjaTkaTlaTmaTnaToaTpaTqaTraOuaTsaTtaTuaTvaTwaTxaTyaTzaRHaTAaTBaRIaTCaTDaTEaTFaROaTGaRQaRRaRSaTHaTIaQdaTJaTKaTKaTLaScaScaScaScaSdapraaaaaaaaaaaaaaaaaaaQfaQfaQfaQfaQfaQfaQfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaONaTMaTNaQiaOMaQjaOFaQjaOFaQjaOFaQjaOMaQkaQlaKzaKBaTOaTPaTQaTRaTSaTSaJraTTaTUaTVaTWaTXaTYaTZaMqaUaaKHaUbaUcaUdaUeaUfaUgaUhaUiaUjaUkaMvaaaaabaaaaUlaUmaUlaaaaabaaaaCuaJLaJMaUnaUoaUpaUqaUraJMaGvaIKaUsaUtaKPaUuaUvaKSaUwaKSaUxaUyaUzaIKaUAaUBaUCaUDaUEaUFaUGaUHaaaaaaaSKaUIaUJaUKaMcaULaUMaMQaMQaUNaMQaMQaMQaUOaMeaUPaMeaUQaURaMeaUSaMeaUTaUUaUVaUWaUXaUYaUTaUZaVaaVbaVcaVbaVbaVbaVbaVdaVbaVbaVeaVbaVfaVgaVbaVhayHaRDaViaTvaVjaVkaVlaVmaVnaVoaVpaVqaRIaVraVsaVtaVuaVvaTGaRQaRRaRSaRTaVwaQdaVxaTKaTKaTLaScaScaScaScaSdapraaaaaaaaaaaaaaaaaaaQfaQfaQfaQfaQfaQfaQfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVyaVzaNiaODaOMaOFaVAaVBaOFaOFaVCaVAaOMaONaVDaKzaKBaVEaVFaVGaVHaVGaVGaVGaVGaVGaVIaJraKHaVJaVKaVJaKHaKHaVLaVMaVLaMuaMuaMuaMuaVLaVNaVOaMvaVPaVQaVQaVRaVSaVRaVQaVQaVTaVUaVVaJMaVWaJMaVXaVYaVZaJMaWaaIKaIKaIKaIKaWbaWcaWdaWeaWdaWcaWbaIKaIKaWfaUDaUDaUDaUDaWgaWhaWiaWjaWkaSKaWlaUJaWmaMcaMcaMcaMcaMcaMcaMcaMeaMeaUOaWnaWoaWpaWqaWraWsaWtaWuaUTaWvaWwaWxaWyaWzaUTaWAaWBaWCaWDaWCaWEaWFaWGaWHaWIaWJaWKaWLaWMaWNaVbaWOaRtaWPaWQaWRaVjaWSaVlaVmaWTaRIaWUaWVaWWaWXaWYaTFaTFaRIaRIaRQaRRaRSaTHaWZaQdaXaaXbaXcaXdaXeaXfaScaScaXgapraaaaaaaaaaaaaaaaQfaQfaQfaQfaQfaQfaQfaQfaQfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVyaNiaNjaNiaNiaNkaNlaNiaNiaNjaVzaXhaCuaXiaVEaInaXjaXjaXkaXjaXlaDEaXmaXnaJraXoaXpaXqaXqaXraXsaXqaXtaXqaXqaXqaXuaXqaXqaXvaXwaXxaXyaXzaXAaXyaXBaXyaXyaXyaXyaXCaXDaXEaXqaXqaXFaXGaXHaXIaXJaXKaXLaXMaXNaXOaXPaXPaXPaXPaXPaXPaXQaXRaXSaXTaXUaXVaXWaXXaXYaXZaUDaUDaYaaYbaYcaYbaYcaYdaYeaYfaYgaYhaYiaMeaYjaYkaYlaYmaYnaYnaYoaYpaYqaYraUTaYsaYtaYuaYuaYvaUTaYwaYxaYyaYzaYAaYAaYBaYCaYDaWNaYEaYFaYGaYHaWNaVbaVhaKsaRDaYIaYJaYJaYKaYLaYJaYMaRIaYNaYOaRIaYPaYQaTFaYRaRIaYSaYTaYUaRSaQbaQbaQdaYVaQeaYWaYXaQeaQeaQeaQeaQeabLadbaaaaaaaaaaaaaQfaQfaQfaQfaQfaQfaQfaQfaQfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaInaYYaKzaKzaKzaKzaKzaKzaYYaInaMlaCuaYZaZaaInaZbaZcaZdaZdaZeaDEaZfaXnaZgaZhaXpaZiaZjaZkaZlaZlaZmaZnaZnaZnaZoaZpaZpaZqaZraZsaZlaZlaZtaZpaZvaZwaZxaZxaZyaZzaZAaZuaZuaZuaZBaXGaXHaXIaXJaXJaXJaXJaZCaXJaXJaXJaXJaXJaXJaZDaZEaZFaZGaZHaZIaZJaZKaZLaZMaZNaZNaZNaZOaZPaZPaZPaZQaYiaYiaYiaZRaZSaYiaMeaZTaZUaYnaYnaZVaYnaZWaZXaYqaZYaUTaZZbaababbacbadaUTbaebafbagbahbaibajaVbbakbalbakaVbaVbaVbaVeaVbaVbaVhayHaRDbamaTvaTvaTvbanaTvbaoaRIaRIaRIaRIaRIaRIaRIbapaRIaRSaRSaRRaRSbaqbaraQbbasbatbaubavbawbaxbaybazbaAaaaaaaaaaaaaaQfaQfaQfaQfaQfaQfaQfaQfaQfaQfaQfaQfaQfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVyaNiaNjaNiaNiaNkaNlaNiaNiaNjaVzaXhaCuaXiaVEaInaXjaXjaXkaXjaXlaDEaXmaXnaJraXoaXpaXqaXqaXraXsaXqaXtaXqaXqaXqaXuaXqaXqaXvaXwaXxaXyaXzaXAaXyaXBaXyaXyaXyaXyaXCaXDaXEaXqaXqaXFaXGaXHaXIaXJaXKaXLaXMaXNaXPaXPaXPaXPaXPaXPaXPaXQaXRaXWaXSaXTaXUaXVaXXaXYaXZaUDaUDaYaaYbaYcaYbaYcaYdaYeaYfaYgaYhaYiaMeaYjaYkaYlaYmaYnaYnaYoaYpaYqaYraUTaYsaYtaYuaYuaYvaUTaYwaYxaYyaYzaYAaYAaYBaYCaYDaWNaYEaYFaYGaYHaWNaVbaVhaKsaRDaYIaYJaYJaYKaYLaYJaYMaRIaYNaYOaRIaYPaYQaTFaYRaRIaYSaYTaYUaRSaQbaQbaQdaYVaQeaYWaYXaQeaQeaQeaQeaQeabLadbaaaaaaaaaaaaaQfaQfaQfaQfaQfaQfaQfaQfaQfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaInaYYaKzaKzaKzaKzaKzaKzaYYaInaMlaCuaYZaZaaInaZbaZcaZdaZdaZeaDEaZfaXnaZgaZhaXpaZiaZjaZkaZlaZlaZmaZnaZnaZnaZoaZpaZpaZqaZraZsaZlaZlaZtaZpaZvaZwaZxaZxaZyaZzaZAaZuaZuaZuaZBaXGaXHaXIaXJaXJaXJaXJaZCaXJaXJaXJaXJaXJaXJaZDaZEaZNaZFaZGaZIaZHaZKaZJaZLaZNaZNaZNaZOaZPaZPaZPaZQaYiaYiaYiaZRaZSaYiaMeaZTaZUaYnaYnaZVaYnaZWaZXaYqaZYaUTaZZbaababbacbadaUTbaebafbagbahbaibajaVbbakbalbakaVbaVbaVbaVeaVbaVbaVhayHaRDbamaTvaTvaTvbanaTvbaoaRIaRIaRIaRIaRIaRIaRIbapaRIaRSaRSaRRaRSbaqbaraQbbasbatbaubavbawbaxbaybazbaAaaaaaaaaaaaaaQfaQfaQfaQfaQfaQfaQfaQfaQfaQfaQfaQfaQfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaLyaCuaInaGdaKzbaBbaCbaDbaEaKzaGdaInaInaCubaFaVEaInbaGbaHaZdaZdaZeaDEbaIaXnaJraZhaXpaXqbaJbaKbaLbaLbaMbaNbaObaLbaPbaLbaQbaLbaRbaSbaLbaLbaWbaLbaLbaUbaVbaLbaWbaXbaYbaZaXqaXqbbabbbbbcbbdbbebbfbbebbgbbhbbgbbgbbgbbgbbgbbgbbibbjbbkbbkbbkbbkbblbbkbbmbbnbbkbbkbbobbpbbqbbqbbqbbqbbqbbqbbqbbraYiaYiaMebbsbbtbbubbvbbvbbwbbxaZXaYqbbyaUTaUTaUTaUTaUTbbzaUTbbAbbBbbCbbDaWCbbEaVbbbFbbGbbHbbIbbJbbKbbLbbMaVbaVhaHYaRDbbNbbOaTvbbPbbQaTvbbRbbRaRDbbSbbTbbUaQbbbVbbWbbXaRSaRSbbYbbZaQbbcaaQbbcbbatbccbcdbcebatbatbcfbaAaaaaaaaaaaaaaQfaQfaQfaQfaQfaQfaQfaQfaQfaQfaQfaQfaQfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaDEaInaYYaKzaKBaJraJraKCaKzaYYaKzbcgbchbcibcjaInbckbckaXkbckaXlaDEbclaXnaJraDEbcmbcmbcnbcobcobcobcobcobcobcpbcqbcobcobcobcobcobcobcrbcsbctbctbcubctbcvbcwbcxbcvbcvbcybczbcAbcmbcBbcBbcCbcCbcCbcDbcDbcDbcDbcDbcDbcDbcDbcEbcFbcFbcGbcFbcHbcHbcHbcHbcIbcJbcHbcEbcKbcKbcKbcKbcKbcKbcKbcKbcLbcLbcLaMebcMbcNbcObcObcObcObcPbcQbcRbcSbcTbcUbcVbcWbcXbcYaUTaUTbcZbdabdbbdabdaaVbbdcbddbdebdebdebdebdfbdgaVbbdhbdiaRDbdjaTvbbPbbPbbQbbPaTvbdkaRDbdlbdmbdnaQbaRSbdobdpbdqbdqbdrbdsbdtbdubdvbdwbdxbdybdzbavbatbatbdAbaAaaaaaaaaaaaaaQfaQfaQfaQfaQfaQfaQfaQfaQfaQfaQfaQfbdBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabdCbdDaJrbdEbdFbdGbdHbdIbdJbdHbdKbdLbdHbdHbdMbdNbdObdPbdQbdQbdQbdRbdQbdSbdTaDEbdUbdVbdWbcobdXbdYbdZbeabebbecbedbeebefbegbehbeibcobejbekbctbelbembenbcvbeobepbeqbcvberbesbetberberberbeuaXJaXObcDaaaaaaaaaaaaaaaaaaaaabcEbevbewbexbeybezbeAbeBbeCbeDbeEbeFbcEaaaaaaaaaaaaaaaaaaaaabcKbeGaYibeHaMebeIbcNbcSbcSbcSbcSbcSbeJbeKbcSbcSbcSbeLbeMbeMbeNbeObePbeQbeRbeSbeTbeUaVbbeVbeWbeXbeYbeYbeXbeZbfaaVbaVhayHaRDbfbbfcaTvbbPbbQaTvbfdbfdaRDaRDbfeaRDaQbbffbbWbbZbfgbfgbfhbbZaQbaQbaQbbfibatbfjbfjbfkbfjbatbflbaAaabaaaaaabfmaQfaQfaQfaQfaQfaQfaQfaQfaQfaQfaQfaQfaQfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/code/game/machinery/atmo_control.dm b/code/game/machinery/atmo_control.dm
index ac70b7d7d38..fbe43b8095b 100644
--- a/code/game/machinery/atmo_control.dm
+++ b/code/game/machinery/atmo_control.dm
@@ -141,7 +141,7 @@ obj/machinery/air_sensor
icon = 'icons/obj/computer.dmi'
icon_screen = "tank"
icon_keyboard = "atmos_key"
- circuit = "/obj/item/weapon/circuitboard/air_management"
+ circuit = /obj/item/weapon/circuitboard/air_management
req_one_access_txt = "24;10"
name = "Computer"
@@ -360,7 +360,7 @@ legend {
return 1
large_tank_control
- circuit = "/obj/item/weapon/circuitboard/large_tank_control"
+ circuit = /obj/item/weapon/circuitboard/large_tank_control
req_one_access_txt = "24;10"
settagwhitelist = list("input_tag", "output_tag")
@@ -586,7 +586,7 @@ legend {
fuel_injection
icon = 'icons/obj/computer.dmi'
icon_screen = "atmos"
- circuit = "/obj/item/weapon/circuitboard/injector_control"
+ circuit = /obj/item/weapon/circuitboard/injector_control
var/device_tag
var/list/device_info
diff --git a/code/game/machinery/atmoalter/area_atmos_computer.dm b/code/game/machinery/atmoalter/area_atmos_computer.dm
index b95e1e1ea0c..948de84f89f 100644
--- a/code/game/machinery/atmoalter/area_atmos_computer.dm
+++ b/code/game/machinery/atmoalter/area_atmos_computer.dm
@@ -3,7 +3,7 @@
desc = "A computer used to control the stationary scrubbers and pumps in the area."
icon_screen = "area_atmos"
icon_keyboard = "atmos_key"
- circuit = "/obj/item/weapon/circuitboard/area_atmos"
+ circuit = /obj/item/weapon/circuitboard/area_atmos
var/list/connectedscrubbers = new()
var/status = ""
diff --git a/code/game/machinery/computer/Operating.dm b/code/game/machinery/computer/Operating.dm
index 5d1b14e9623..1daf3be5714 100644
--- a/code/game/machinery/computer/Operating.dm
+++ b/code/game/machinery/computer/Operating.dm
@@ -6,7 +6,7 @@
anchored = 1.0
icon_keyboard = "med_key"
icon_screen = "crew"
- circuit = "/obj/item/weapon/circuitboard/operating"
+ circuit = /obj/item/weapon/circuitboard/operating
var/mob/living/carbon/human/victim = null
var/obj/machinery/optable/table = null
@@ -31,11 +31,11 @@
if(..(user))
return
- if(stat & (NOPOWER|BROKEN))
- return
-
-
- add_fingerprint(user)
+ if(stat & (NOPOWER|BROKEN))
+ return
+
+
+ add_fingerprint(user)
interact(user)
diff --git a/code/game/machinery/computer/atmos_alert.dm b/code/game/machinery/computer/atmos_alert.dm
index c93ae5cafc0..6cbd71cf35a 100644
--- a/code/game/machinery/computer/atmos_alert.dm
+++ b/code/game/machinery/computer/atmos_alert.dm
@@ -7,7 +7,7 @@ var/global/list/minor_air_alarms = list()
/obj/machinery/computer/atmos_alert
name = "Atmospheric Alert Computer"
desc = "Used to access the station's atmospheric sensors."
- circuit = "/obj/item/weapon/circuitboard/atmos_alert"
+ circuit = /obj/item/weapon/circuitboard/atmos_alert
icon_keyboard = "atmos_key"
icon_screen = "alert:0"
light_color = LIGHT_COLOR_CYAN
@@ -80,6 +80,6 @@ var/datum/topic_state/air_alarm_topic/air_alarm_topic = new()
extra_href["remote_access"] = 1
return extra_href
-
+
/datum/topic_state/air_alarm_topic/can_use_topic(var/src_object, var/mob/user)
return STATUS_INTERACTIVE
diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm
index 88a8f01b159..09a0c72ed56 100644
--- a/code/game/machinery/computer/buildandrepair.dm
+++ b/code/game/machinery/computer/buildandrepair.dm
@@ -197,6 +197,12 @@
/obj/item/weapon/circuitboard/splicer
name = "Circuit board (Disease Splicer)"
build_path = /obj/machinery/computer/diseasesplicer
+/obj/item/weapon/circuitboard/labor_shuttle
+ name = "circuit Board (Labor Shuttle)"
+ build_path = /obj/machinery/computer/labor_shuttle
+/obj/item/weapon/circuitboard/labor_shuttle/one_way
+ name = "circuit Board (Prisoner Shuttle Console)"
+ build_path = /obj/machinery/computer/labor_shuttle/one_way
/obj/item/weapon/circuitboard/mining_shuttle
name = "Circuit board (Mining Shuttle)"
build_path = /obj/machinery/computer/shuttle_control/mining
diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm
index 90fb5bd41cc..c70ac8d37cc 100644
--- a/code/game/machinery/computer/camera.dm
+++ b/code/game/machinery/computer/camera.dm
@@ -2,13 +2,13 @@
/proc/invalidateCameraCache()
camera_cache_id = (++camera_cache_id % 999999)
-
+
/obj/machinery/computer/security
name = "Camera Monitor"
desc = "Used to access the various cameras networks on the station."
icon_keyboard = "security_key"
icon_screen = "cameras"
- circuit = "/obj/item/weapon/circuitboard/camera"
+ circuit = /obj/item/weapon/circuitboard/camera
var/obj/machinery/camera/current = null
var/list/network = list("")
var/last_pic = 1.0
@@ -43,7 +43,7 @@
networks["ERT"] = list(access_cent_specops_commander,access_cent_commander)
networks["CentCom"] = list(access_cent_security,access_cent_commander)
networks["Thunderdome"] = list(access_cent_thunder,access_cent_commander)
-
+
..()
/obj/machinery/computer/security/attack_ai(var/mob/user as mob)
@@ -115,7 +115,7 @@
break
if(tempnets.len)
data["networks"] = tempnets
-
+
if(current)
data["current"] = current.nano_structure()
data["cameras"] = list("__json_cache" = camera_cache)
@@ -207,7 +207,7 @@
set_current(C)
use_power(50)
return 1
-
+
/obj/machinery/computer/security/proc/set_current(var/obj/machinery/camera/C)
if(current == C)
return
@@ -220,8 +220,8 @@
use_power = 2
var/mob/living/L = current.loc
if(istype(L))
- L.tracking_initiated()
-
+ L.tracking_initiated()
+
/obj/machinery/computer/security/proc/reset_current()
if(current)
var/mob/living/L = current.loc
diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm
index d255e4837e6..020969521a1 100644
--- a/code/game/machinery/computer/card.dm
+++ b/code/game/machinery/computer/card.dm
@@ -14,7 +14,7 @@ var/time_last_changed_position = 0
var/obj/item/weapon/card/id/modify = null
var/mode = 0.0
var/printing = null
-
+
//Cooldown for closing positions in seconds
//if set to -1: No cooldown... probably a bad idea
//if set to 0: Not able to close "original" positions. You can only close positions that you have opened before
@@ -36,7 +36,7 @@ var/time_last_changed_position = 0
/datum/job/brigdoc,
/datum/job/mechanic,
/datum/job/barber,
- /datum/job/chaplain,
+ /datum/job/chaplain,
/datum/job/civilian
)
@@ -69,7 +69,7 @@ var/time_last_changed_position = 0
"job" = job)))
return formatted
-
+
/obj/machinery/computer/card/proc/format_job_slots()
var/list/formatted = list()
for(var/datum/job/job in job_master.occupations)
@@ -83,7 +83,7 @@ var/time_last_changed_position = 0
"can_close" = can_close_job(job))))
return formatted
-
+
/obj/machinery/computer/card/proc/format_card_skins(list/card_skins)
var/list/formatted = list()
for(var/skin in card_skins)
@@ -131,7 +131,7 @@ var/time_last_changed_position = 0
nanomanager.update_uis(src)
attack_hand(user)
-
+
//Check if you can't open a new position for a certain job
/obj/machinery/computer/card/proc/job_blacklisted(datum/job/job)
return (job.type in blacklisted)
@@ -164,11 +164,11 @@ var/time_last_changed_position = 0
return attack_hand(user)
/obj/machinery/computer/card/attack_hand(mob/user as mob)
- if(..())
+ if(..())
return
- if(stat & (NOPOWER|BROKEN))
+ if(stat & (NOPOWER|BROKEN))
return
-
+
ui_interact(user)
/obj/machinery/computer/card/ui_interact(mob/user, ui_key="main", var/datum/nanoui/ui = null, var/force_open = 1)
@@ -200,15 +200,15 @@ var/time_last_changed_position = 0
data["special_jobs"] = format_jobs(whitelisted_positions)
data["centcom_jobs"] = format_jobs(get_all_centcom_jobs())
data["card_skins"] = format_card_skins(get_station_card_skins())
-
+
data["job_slots"] = format_job_slots()
-
+
var/time_to_wait = round(change_position_cooldown - ((world.time / 10) - time_last_changed_position), 1)
var/mins = round(time_to_wait / 60)
var/seconds = time_to_wait - (60*mins)
data["cooldown_mins"] = mins
data["cooldown_secs"] = (seconds < 10) ? "0[seconds]" : seconds
-
+
if(modify)
data["current_skin"] = modify.icon_state
@@ -222,7 +222,7 @@ var/time_last_changed_position = 0
data["all_centcom_access"] = all_centcom_access
data["all_centcom_skins"] = format_card_skins(get_centcom_card_skins())
-
+
else if (modify)
var/list/regions = list()
for(var/i = 1; i <= 7; i++)
@@ -296,7 +296,7 @@ var/time_last_changed_position = 0
modify.access -= access_type
if(!access_allowed)
modify.access += access_type
-
+
if("skin")
var/skin = href_list["skin_target"]
if(is_authenticated(usr) && modify && ((skin in get_station_card_skins()) || ((skin in get_centcom_card_skins()) && is_centcom())))
@@ -390,7 +390,7 @@ var/time_last_changed_position = 0
modify.access = list()
callHook("terminate_employee", list(modify))
-
+
if("make_job_available")
// MAKE ANOTHER JOB POSITION AVAILABLE FOR LATE JOINERS
if(is_authenticated(usr))
@@ -429,5 +429,5 @@ var/time_last_changed_position = 0
/obj/machinery/computer/card/centcom
name = "CentCom Identification Computer"
- circuit = "/obj/item/weapon/circuitboard/card/centcom"
+ circuit = /obj/item/weapon/circuitboard/card/centcom
req_access = list(access_cent_commander)
diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm
index 31fa24feb6f..0cc1cc07a60 100644
--- a/code/game/machinery/computer/cloning.dm
+++ b/code/game/machinery/computer/cloning.dm
@@ -3,7 +3,7 @@
icon = 'icons/obj/computer.dmi'
icon_keyboard = "med_key"
icon_screen = "dna"
- circuit = "/obj/item/weapon/circuitboard/cloning"
+ circuit = /obj/item/weapon/circuitboard/cloning
req_access = list(access_heads) //Only used for record deletion right now.
var/obj/machinery/dna_scannernew/scanner = null //Linked scanner. For scanning.
var/list/pods = list() //Linked cloning pods.
diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm
index 7a6ffcdc22a..44e6d95de53 100644
--- a/code/game/machinery/computer/communications.dm
+++ b/code/game/machinery/computer/communications.dm
@@ -39,7 +39,7 @@ var/shuttle_call/shuttle_calls[0]
icon_keyboard = "tech_key"
icon_screen = "comm"
req_access = list(access_heads)
- circuit = "/obj/item/weapon/circuitboard/communications"
+ circuit = /obj/item/weapon/circuitboard/communications
var/prints_intercept = 1
var/authenticated = 0
var/list/messagetitle = list()
@@ -64,7 +64,7 @@ var/shuttle_call/shuttle_calls[0]
/obj/machinery/computer/communications/New()
..()
crew_announcement.newscast = 1
-
+
/obj/machinery/computer/communications/proc/is_authenticated(var/mob/user, var/message = 1)
if(authenticated == 2)
return 2
@@ -84,10 +84,10 @@ var/shuttle_call/shuttle_calls[0]
if ((!(src.z in config.station_levels) && !(src.z in config.admin_levels)))
usr << "Unable to establish a connection: You're too far away from the station!"
return 1
-
+
if(href_list["login"])
if(!ishuman(usr))
- usr << "Access denied."
+ usr << "Access denied."
return
var/mob/living/carbon/human/M = usr
var/obj/item/card = M.get_active_hand()
@@ -103,11 +103,11 @@ var/shuttle_call/shuttle_calls[0]
crew_announcement.announcer = GetNameAndAssignmentFromId(I)
nanomanager.update_uis(src)
return
-
+
if(href_list["logout"])
authenticated = 0
crew_announcement.announcer = ""
- setMenuState(usr,COMM_SCREEN_MAIN)
+ setMenuState(usr,COMM_SCREEN_MAIN)
nanomanager.update_uis(src)
return
@@ -117,12 +117,12 @@ var/shuttle_call/shuttle_calls[0]
switch(href_list["operation"])
if("main")
setMenuState(usr,COMM_SCREEN_MAIN)
-
+
if("changeseclevel")
setMenuState(usr,COMM_SCREEN_SECLEVEL)
if("newalertlevel")
- if(isAI(usr) || isrobot(usr))
+ if(isAI(usr) || isrobot(usr))
usr << "Firewalls prevent you from changing the alert level."
nanomanager.update_uis(src)
return 1
@@ -177,14 +177,14 @@ var/shuttle_call/shuttle_calls[0]
if(!input || ..() || !is_authenticated(usr))
nanomanager.update_uis(src)
return
-
+
call_shuttle_proc(usr, input)
if(emergency_shuttle.online())
post_status("shuttle")
setMenuState(usr,COMM_SCREEN_MAIN)
-
+
if("cancelshuttle")
- if(isAI(usr) || isrobot(usr))
+ if(isAI(usr) || isrobot(usr))
usr << "Firewalls prevent you from recalling the shuttle."
nanomanager.update_uis(src)
return 1
@@ -194,13 +194,13 @@ var/shuttle_call/shuttle_calls[0]
if(emergency_shuttle.online())
post_status("shuttle")
setMenuState(usr,COMM_SCREEN_MAIN)
-
+
if("messagelist")
src.currmsg = 0
if(href_list["msgid"])
setCurrentMessage(usr, text2num(href_list["msgid"]))
setMenuState(usr,COMM_SCREEN_MESSAGES)
-
+
if("delmessage")
if(href_list["msgid"])
src.currmsg = text2num(href_list["msgid"])
@@ -234,7 +234,7 @@ var/shuttle_call/shuttle_calls[0]
if("setmsg1")
stat_msg1 = input("Line 1", "Enter Message Text", stat_msg1) as text|null
setMenuState(usr,COMM_SCREEN_STAT)
-
+
if("setmsg2")
stat_msg2 = input("Line 2", "Enter Message Text", stat_msg2) as text|null
setMenuState(usr,COMM_SCREEN_STAT)
@@ -256,8 +256,8 @@ var/shuttle_call/shuttle_calls[0]
centcomm_message_cooldown = 1
spawn(6000)//10 minute cooldown
centcomm_message_cooldown = 0
- setMenuState(usr,COMM_SCREEN_MAIN)
-
+ setMenuState(usr,COMM_SCREEN_MAIN)
+
if("MessageCentcomm")
if(is_authenticated(usr) == 2)
if(centcomm_message_cooldown)
@@ -300,7 +300,7 @@ var/shuttle_call/shuttle_calls[0]
src.emagged = 0
setMenuState(usr,COMM_SCREEN_MAIN)
- nanomanager.update_uis(src)
+ nanomanager.update_uis(src)
return 1
/obj/machinery/computer/communications/emag_act(user as mob)
@@ -316,13 +316,13 @@ var/shuttle_call/shuttle_calls[0]
if(..(user))
return
- if(stat & (NOPOWER|BROKEN))
- return
-
+ if(stat & (NOPOWER|BROKEN))
+ return
+
if (!(src.z in list(ZLEVEL_STATION, ZLEVEL_CENTCOMM)))
user << "Unable to establish a connection: You're too far away from the station!"
return
-
+
ui_interact(user)
/obj/machinery/computer/communications/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null)
diff --git a/code/game/machinery/computer/crew.dm b/code/game/machinery/computer/crew.dm
index 9f344a8171b..6d1643fd988 100644
--- a/code/game/machinery/computer/crew.dm
+++ b/code/game/machinery/computer/crew.dm
@@ -7,7 +7,7 @@
idle_power_usage = 250
active_power_usage = 500
light_color = LIGHT_COLOR_DARKBLUE
- circuit = "/obj/item/weapon/circuitboard/crew"
+ circuit = /obj/item/weapon/circuitboard/crew
var/datum/nano_module/crew_monitor/crew_monitor
/obj/machinery/computer/crew/New()
diff --git a/code/game/machinery/computer/honkputer.dm b/code/game/machinery/computer/honkputer.dm
index 188b22e502d..0b31b365033 100644
--- a/code/game/machinery/computer/honkputer.dm
+++ b/code/game/machinery/computer/honkputer.dm
@@ -7,7 +7,7 @@
icon_screen = "honkcomms"
light_color = LIGHT_COLOR_PINK
req_access = list(access_clown)
- circuit = "/obj/item/weapon/circuitboard/HONKputer"
+ circuit = /obj/item/weapon/circuitboard/HONKputer
var/authenticated = 0
var/message_cooldown = 0
var/state = STATE_DEFAULT
diff --git a/code/game/machinery/computer/law.dm b/code/game/machinery/computer/law.dm
index 6f7aaf2006b..020ed6e45e2 100644
--- a/code/game/machinery/computer/law.dm
+++ b/code/game/machinery/computer/law.dm
@@ -5,7 +5,7 @@
desc = "Used to upload laws to the AI."
icon_screen = "command"
icon_keyboard = "med_key"
- circuit = "/obj/item/weapon/circuitboard/aiupload"
+ circuit = /obj/item/weapon/circuitboard/aiupload
var/mob/living/silicon/ai/current = null
var/opened = 0
@@ -63,7 +63,7 @@
desc = "Used to upload laws to Cyborgs."
icon_screen = "command"
icon_keyboard = "med_key"
- circuit = "/obj/item/weapon/circuitboard/borgupload"
+ circuit = /obj/item/weapon/circuitboard/borgupload
var/mob/living/silicon/robot/current = null
diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm
index 0680cb330f4..5c47e0f923f 100644
--- a/code/game/machinery/computer/medical.dm
+++ b/code/game/machinery/computer/medical.dm
@@ -6,7 +6,7 @@
icon_keyboard = "med_key"
icon_screen = "medcomp"
req_one_access = list(access_medical, access_forensics_lockers)
- circuit = "/obj/item/weapon/circuitboard/med_data"
+ circuit = /obj/item/weapon/circuitboard/med_data
var/obj/item/weapon/card/id/scan = null
var/authenticated = null
var/rank = null
diff --git a/code/game/machinery/computer/message.dm b/code/game/machinery/computer/message.dm
index 3099d738a70..ceaa0ab5041 100644
--- a/code/game/machinery/computer/message.dm
+++ b/code/game/machinery/computer/message.dm
@@ -11,7 +11,7 @@
light_color = LIGHT_COLOR_GREEN
var/hack_icon = "tcboss"
var/normal_icon = "comm_logs"
- circuit = "/obj/item/weapon/circuitboard/message_monitor"
+ circuit = /obj/item/weapon/circuitboard/message_monitor
//Server linked to.
var/obj/machinery/message_server/linkedServer = null
//Sparks effect - For emag
@@ -65,7 +65,7 @@
// Will help make emagging the console not so easy to get away with.
MK.info += "
£%@%(*$%&(£&?*(%&£/{}"
update_icon()
- spawn(100*length(src.linkedServer.decryptkey))
+ spawn(100*length(src.linkedServer.decryptkey))
UnmagConsole()
update_icon()
message = rebootmsg
@@ -77,7 +77,7 @@
icon_screen = hack_icon
else
icon_screen = normal_icon
-
+
..()
/obj/machinery/computer/message_monitor/initialize()
@@ -89,9 +89,9 @@
return
/obj/machinery/computer/message_monitor/attack_hand(var/mob/user as mob)
- if(..())
+ if(..())
return
- if(stat & (NOPOWER|BROKEN))
+ if(stat & (NOPOWER|BROKEN))
return
//If the computer is being hacked or is emagged, display the reboot message.
if(hacking || emag)
diff --git a/code/game/machinery/computer/prisoner.dm b/code/game/machinery/computer/prisoner.dm
index af429a3014b..ac5d15fc392 100644
--- a/code/game/machinery/computer/prisoner.dm
+++ b/code/game/machinery/computer/prisoner.dm
@@ -6,7 +6,7 @@
icon_keyboard = "security_key"
icon_screen = "explosive"
req_access = list(access_armory)
- circuit = "/obj/item/weapon/circuitboard/prisoner"
+ circuit = /obj/item/weapon/circuitboard/prisoner
var/id = 0.0
var/temp = null
var/status = 0
@@ -82,7 +82,7 @@
/obj/machinery/computer/prisoner/Topic(href, href_list)
if(..())
return 1
-
+
usr.set_machine(src)
if(href_list["id"])
diff --git a/code/game/machinery/computer/prisonshuttle.dm b/code/game/machinery/computer/prisonshuttle.dm
index 107cfc6cb0f..3e860928ef9 100644
--- a/code/game/machinery/computer/prisonshuttle.dm
+++ b/code/game/machinery/computer/prisonshuttle.dm
@@ -17,7 +17,7 @@ var/prison_shuttle_timeleft = 0
icon_screen = "syndishuttle"
light_color = LIGHT_COLOR_PURE_CYAN
req_access = list(access_security)
- circuit = "/obj/item/weapon/circuitboard/prison_shuttle"
+ circuit = /obj/item/weapon/circuitboard/prison_shuttle
var/temp = null
var/hacked = 0
var/allowedtocall = 0
diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm
index e77d0088b52..017702d67fa 100644
--- a/code/game/machinery/computer/security.dm
+++ b/code/game/machinery/computer/security.dm
@@ -6,7 +6,7 @@
icon_keyboard = "security_key"
icon_screen = "security"
req_one_access = list(access_security, access_forensics_lockers)
- circuit = "/obj/item/weapon/circuitboard/secure_data"
+ circuit = /obj/item/weapon/circuitboard/secure_data
var/obj/item/weapon/card/id/scan = null
var/authenticated = null
var/rank = null
diff --git a/code/game/machinery/computer/skills.dm b/code/game/machinery/computer/skills.dm
index 50c2adca3f4..a2adae97cf3 100644
--- a/code/game/machinery/computer/skills.dm
+++ b/code/game/machinery/computer/skills.dm
@@ -8,7 +8,7 @@
icon_screen = "medlaptop"
light_color = LIGHT_COLOR_GREEN
req_one_access = list(access_heads)
- circuit = "/obj/item/weapon/circuitboard/skills"
+ circuit = /obj/item/weapon/circuitboard/skills
var/obj/item/weapon/card/id/scan = null
var/authenticated = null
var/rank = null
diff --git a/code/game/machinery/computer/store.dm b/code/game/machinery/computer/store.dm
index 42760e1b3e4..5beab8b5d1e 100644
--- a/code/game/machinery/computer/store.dm
+++ b/code/game/machinery/computer/store.dm
@@ -2,7 +2,7 @@
name = "Merch Computer"
icon = 'icons/obj/computer.dmi'
icon_screen = "comm_logs"
- circuit = "/obj/item/weapon/circuitboard/merch"
+ circuit = /obj/item/weapon/circuitboard/merch
light_color = LIGHT_COLOR_GREEN
diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm
index f509cb9026d..87f008bc453 100644
--- a/code/game/machinery/cryopod.dm
+++ b/code/game/machinery/cryopod.dm
@@ -14,7 +14,7 @@
desc = "An interface between crew and the cryogenic storage oversight systems."
icon = 'icons/obj/Cryogenic2.dmi'
icon_state = "cellconsole"
- circuit = "/obj/item/weapon/circuitboard/cryopodcontrol"
+ circuit = /obj/item/weapon/circuitboard/cryopodcontrol
density = 0
interact_offline = 1
req_one_access = list(access_heads, access_armory) //Heads of staff or the warden can go here to claim recover items from their department that people went were cryodormed with.
@@ -33,7 +33,7 @@
desc = "An interface between crew and the robotic storage systems"
icon = 'icons/obj/robot_storage.dmi'
icon_state = "console"
- circuit = "/obj/item/weapon/circuitboard/robotstoragecontrol"
+ circuit = /obj/item/weapon/circuitboard/robotstoragecontrol
storage_type = "cyborgs"
storage_name = "Robotic Storage Control"
diff --git a/code/game/machinery/telecomms/logbrowser.dm b/code/game/machinery/telecomms/logbrowser.dm
index 51319a38237..9bc3e77fa1e 100644
--- a/code/game/machinery/telecomms/logbrowser.dm
+++ b/code/game/machinery/telecomms/logbrowser.dm
@@ -18,7 +18,7 @@
var/universal_translate = 0 // set to 1 if it can translate nonhuman speech
req_access = list(access_tcomsat)
- circuit = "/obj/item/weapon/circuitboard/comm_server"
+ circuit = /obj/item/weapon/circuitboard/comm_server
attack_hand(mob/user as mob)
if(stat & (BROKEN|NOPOWER))
diff --git a/code/game/machinery/telecomms/telemonitor.dm b/code/game/machinery/telecomms/telemonitor.dm
index 5c0b8f5eac2..1bd424c0142 100644
--- a/code/game/machinery/telecomms/telemonitor.dm
+++ b/code/game/machinery/telecomms/telemonitor.dm
@@ -18,7 +18,7 @@
var/network = "NULL" // the network to probe
var/temp = "" // temporary feedback messages
- circuit = "/obj/item/weapon/circuitboard/comm_monitor"
+ circuit = /obj/item/weapon/circuitboard/comm_monitor
light_color = LIGHT_COLOR_DARKGREEN
diff --git a/code/game/machinery/telecomms/traffic_control.dm b/code/game/machinery/telecomms/traffic_control.dm
index da8669e45e0..6e93ab8b7c6 100644
--- a/code/game/machinery/telecomms/traffic_control.dm
+++ b/code/game/machinery/telecomms/traffic_control.dm
@@ -17,7 +17,7 @@
light_color = LIGHT_COLOR_DARKGREEN
req_access = list(access_tcomsat)
- circuit = "/obj/item/weapon/circuitboard/comm_traffic"
+ circuit = /obj/item/weapon/circuitboard/comm_traffic
/obj/machinery/computer/telecomms/traffic/attack_hand(mob/user)
interact(user)
diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm
index 4aaaf47f8c7..d0b62cef441 100644
--- a/code/game/machinery/teleporter.dm
+++ b/code/game/machinery/teleporter.dm
@@ -3,7 +3,7 @@
desc = "Used to control a linked teleportation Hub and Station."
icon_screen = "teleport"
icon_keyboard = "teleport_key"
- circuit = "/obj/item/weapon/circuitboard/teleporter"
+ circuit = /obj/item/weapon/circuitboard/teleporter
var/obj/item/device/gps/locked = null
var/regime_set = "Teleporter"
var/id = null
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index e2b26e7c491..ba1c8872937 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -70,6 +70,7 @@ var/list/admin_verbs_admin = list(
/client/proc/secrets,
/client/proc/change_human_appearance_admin, /* Allows an admin to change the basic appearance of human-based mobs */
/client/proc/change_human_appearance_self, /* Allows the human-based mob itself change its basic appearance */
+ /client/proc/virus_2_creator,
/client/proc/debug_variables
)
var/list/admin_verbs_ban = list(
@@ -234,7 +235,7 @@ var/list/admin_verbs_proccall = list (
/client/proc/hide_verbs()
set name = "Adminverbs - Hide All"
set category = "Admin"
-
+
if(!holder)
return
@@ -248,7 +249,7 @@ var/list/admin_verbs_proccall = list (
/client/proc/show_verbs()
set name = "Adminverbs - Show"
set category = "Admin"
-
+
if(!holder)
return
@@ -263,8 +264,8 @@ var/list/admin_verbs_proccall = list (
set name = "Aghost"
if(!check_rights(R_ADMIN|R_MOD))
- return
-
+ return
+
if(istype(mob,/mob/dead/observer))
//re-enter
var/mob/dead/observer/ghost = mob
@@ -287,7 +288,7 @@ var/list/admin_verbs_proccall = list (
set name = "Invisimin"
set category = "Admin"
set desc = "Toggles ghost-like invisibility (Don't abuse this)"
-
+
if(!check_rights(R_ADMIN))
return
@@ -305,8 +306,8 @@ var/list/admin_verbs_proccall = list (
set category = "Admin"
if(!check_rights(R_ADMIN))
- return
-
+ return
+
holder.player_panel_old()
feedback_add_details("admin_verb","PP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
return
@@ -316,8 +317,8 @@ var/list/admin_verbs_proccall = list (
set category = "Admin"
if(!check_rights(R_ADMIN|R_MOD))
- return
-
+ return
+
holder.player_panel_new()
feedback_add_details("admin_verb","PPN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
return
@@ -325,10 +326,10 @@ var/list/admin_verbs_proccall = list (
/client/proc/check_antagonists()
set name = "Check Antagonists"
set category = "Admin"
-
+
if(!check_rights(R_ADMIN))
- return
-
+ return
+
holder.check_antagonists()
log_admin("[key_name(usr)] checked antagonists")
feedback_add_details("admin_verb","CHA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -337,10 +338,10 @@ var/list/admin_verbs_proccall = list (
/client/proc/jobbans()
set name = "Display Job bans"
set category = "Admin"
-
+
if(!check_rights(R_ADMIN|R_MOD))
return
-
+
if(config.ban_legacy_system)
holder.Jobbans()
else
@@ -351,10 +352,10 @@ var/list/admin_verbs_proccall = list (
/client/proc/unban_panel()
set name = "Unban Panel"
set category = "Admin"
-
+
if(!check_rights(R_BAN))
return
-
+
if(config.ban_legacy_system)
holder.unbanpanel()
else
@@ -365,10 +366,10 @@ var/list/admin_verbs_proccall = list (
/client/proc/game_panel()
set name = "Game Panel"
set category = "Admin"
-
+
if(!check_rights(R_ADMIN))
return
-
+
holder.Game()
feedback_add_details("admin_verb","GP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
return
@@ -376,14 +377,14 @@ var/list/admin_verbs_proccall = list (
/client/proc/secrets()
set name = "Secrets"
set category = "Admin"
-
+
if(!check_rights(R_ADMIN))
- return
-
+ return
+
holder.Secrets()
feedback_add_details("admin_verb","S") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
return
-
+
/client/proc/findStealthKey(txt)
if(txt)
for(var/P in stealthminID)
@@ -401,15 +402,15 @@ var/list/admin_verbs_proccall = list (
if(num == stealthminID[P])
num++
i = 0
- stealthminID["[ckey]"] = "@[num2text(num)]"
+ stealthminID["[ckey]"] = "@[num2text(num)]"
/client/proc/stealth()
set category = "Admin"
set name = "Stealth Mode"
-
+
if(!check_rights(R_ADMIN))
- return
-
+ return
+
if(holder)
if(holder.fakekey)
holder.fakekey = null
@@ -428,7 +429,7 @@ var/list/admin_verbs_proccall = list (
#define AUTOBANTIME 10
/client/proc/warn(warned_ckey)
- if(!check_rights(R_ADMIN))
+ if(!check_rights(R_ADMIN))
return
if(!warned_ckey || !istext(warned_ckey)) return
@@ -475,7 +476,7 @@ var/list/admin_verbs_proccall = list (
set category = "Special Verbs"
set name = "Drop Bomb"
set desc = "Cause an explosion of varying strength at your location."
-
+
if(!check_rights(R_EVENT))
return
@@ -513,10 +514,10 @@ var/list/admin_verbs_proccall = list (
set category = "Event"
set name = "Give Spell"
set desc = "Gives a spell to a mob."
-
+
if(!check_rights(R_EVENT))
- return
-
+ return
+
var/list/spell_list = list()
var/type_length = length("/obj/effect/proc_holder/spell") + 2
for(var/A in spells)
@@ -529,7 +530,7 @@ var/list/admin_verbs_proccall = list (
T.mind.AddSpell(new S)
else
T.AddSpell(new S)
-
+
feedback_add_details("admin_verb","GS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
log_admin("[key_name(usr)] gave [key_name(T)] the spell [S].")
message_admins("[key_name_admin(usr)] gave [key_name(T)] the spell [S].", 1)
@@ -539,7 +540,7 @@ var/list/admin_verbs_proccall = list (
set category = "Event"
set name = "Give Disease"
set desc = "Gives a Disease to a mob."
-
+
if(!check_rights(R_EVENT))
return
@@ -576,10 +577,10 @@ var/list/admin_verbs_proccall = list (
set category = "Event"
set name = "Make Sound"
set desc = "Display a message to everyone who can hear the target"
-
+
if(!check_rights(R_EVENT))
- return
-
+ return
+
if(O)
var/message = input("What do you want the message to be?", "Make Sound") as text|null
if(!message)
@@ -593,10 +594,10 @@ var/list/admin_verbs_proccall = list (
/client/proc/togglebuildmodeself()
set name = "Toggle Build Mode Self"
set category = "Event"
-
+
if(!check_rights(R_EVENT))
- return
-
+ return
+
if(src.mob)
togglebuildmode(src.mob)
feedback_add_details("admin_verb","TBMS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -605,10 +606,10 @@ var/list/admin_verbs_proccall = list (
set category = "Event"
set name = "oSay"
set desc = "Display a message to everyone who can hear the target"
-
+
if(!check_rights(R_EVENT))
- return
-
+ return
+
if(mob.control_object)
if(!msg)
return
@@ -616,17 +617,17 @@ var/list/admin_verbs_proccall = list (
V.show_message("[mob.control_object.name] says: \"" + msg + "\"", 2)
log_admin("[key_name(usr)] used oSay on [mob.control_object]: [msg]")
message_admins("[key_name_admin(usr)] used oSay on [mob.control_object]: [msg]")
-
+
feedback_add_details("admin_verb","OT") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/kill_air() // -- TLE
set category = "Debug"
set name = "Kill Air"
set desc = "Toggle Air Processing"
-
+
if(!check_rights(R_DEBUG))
- return
-
+ return
+
if(air_processing_killed)
air_processing_killed = 0
usr << "Enabled air processing."
@@ -643,7 +644,7 @@ var/list/admin_verbs_proccall = list (
if(!check_rights(R_ADMIN|R_MOD|R_MENTOR))
return
-
+
log_admin("[key_name(usr)] deadmined themself.")
message_admins("[key_name_admin(usr)] deadmined themself.")
deadmin()
@@ -656,7 +657,7 @@ var/list/admin_verbs_proccall = list (
set name = "Re-admin self"
set category = "Admin"
set desc = "Regain your admin powers."
-
+
var/datum/admins/D = admin_datums[ckey]
var/rank = null
if(config.admin_legacy_system)
@@ -722,10 +723,10 @@ var/list/admin_verbs_proccall = list (
/client/proc/toggle_log_hrefs()
set name = "Toggle href logging"
set category = "Server"
-
+
if(!check_rights(R_SERVER))
return
-
+
if(config)
if(config.log_hrefs)
config.log_hrefs = 0
@@ -738,7 +739,7 @@ var/list/admin_verbs_proccall = list (
set name = "Check AI Laws"
set category = "Admin"
- if(!check_rights(R_ADMIN))
+ if(!check_rights(R_ADMIN))
return
holder.output_ai_laws()
@@ -747,7 +748,7 @@ var/list/admin_verbs_proccall = list (
set name = "Manage Silicon Laws"
set category = "Admin"
- if(!check_rights(R_ADMIN))
+ if(!check_rights(R_ADMIN))
return
var/mob/living/silicon/S = input("Select silicon.", "Manage Silicon Laws") as null|anything in silicon_mob_list
@@ -762,7 +763,7 @@ var/list/admin_verbs_proccall = list (
set name = "C.M.A. - Admin"
set desc = "Allows you to change the mob appearance"
set category = "Admin"
-
+
if(!check_rights(R_ADMIN))
return
@@ -778,7 +779,7 @@ var/list/admin_verbs_proccall = list (
set name = "C.M.A. - Self"
set desc = "Allows the mob to change its appearance"
set category = "Admin"
-
+
if(!check_rights(R_ADMIN))
return
@@ -798,13 +799,26 @@ var/list/admin_verbs_proccall = list (
H.change_appearance(APPEARANCE_ALL, H.loc, check_species_whitelist = 1)
feedback_add_details("admin_verb","CMAS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+/client/proc/virus_2_creator()
+ set name = "Virus2 Creator"
+ set desc = "Allows you to create and spread custom viruses."
+ set category = "Admin"
+
+ if(!check_rights(R_ADMIN))
+ return
+
+ var/datum/nano_module/virus2/virus2 = new()
+ virus2.ui_interact(usr, state = admin_state)
+ log_and_message_admins("has opened the virus2 creator.")
+ feedback_add_details("admin_verb","VS2C")
+
/client/proc/free_slot()
set name = "Free Job Slot"
set category = "Admin"
-
+
if(!check_rights(R_ADMIN))
return
-
+
var/list/jobs = list()
for (var/datum/job/J in job_master.occupations)
if (J.current_positions >= J.total_positions && J.total_positions != -1)
@@ -821,7 +835,7 @@ var/list/admin_verbs_proccall = list (
/client/proc/toggleattacklogs()
set name = "Toggle Attack Log Messages"
set category = "Preferences"
-
+
if(!check_rights(R_ADMIN))
return
@@ -835,10 +849,10 @@ var/list/admin_verbs_proccall = list (
/client/proc/toggledrones()
set name = "Toggle Maintenance Drones"
set category = "Server"
-
- if(!check_rights(R_SERVER))
+
+ if(!check_rights(R_SERVER))
return
-
+
config.allow_drone_spawn = !(config.allow_drone_spawn)
log_admin("[key_name(usr)] has [config.allow_drone_spawn ? "enabled" : "disabled"] maintenance drones.")
message_admins("[key_name_admin(usr)] has [config.allow_drone_spawn ? "enabled" : "disabled"] maintenance drones.")
@@ -846,7 +860,7 @@ var/list/admin_verbs_proccall = list (
/client/proc/toggledebuglogs()
set name = "Toggle Debug Log Messages"
set category = "Preferences"
-
+
if(!check_rights(R_DEBUG))
return
@@ -860,7 +874,7 @@ var/list/admin_verbs_proccall = list (
set category = "Admin"
set name = "Man Up"
set desc = "Tells mob to man up and deal with it."
-
+
if(!check_rights(R_ADMIN))
return
@@ -874,7 +888,7 @@ var/list/admin_verbs_proccall = list (
set category = "Admin"
set name = "Man Up Global"
set desc = "Tells everyone to man up and deal with it."
-
+
if(!check_rights(R_ADMIN))
return
diff --git a/code/modules/atmos_automation/console.dm b/code/modules/atmos_automation/console.dm
index 0a558747523..0a8aecb9150 100644
--- a/code/modules/atmos_automation/console.dm
+++ b/code/modules/atmos_automation/console.dm
@@ -2,7 +2,7 @@
icon = 'icons/obj/computer.dmi'
icon_screen = "area_atmos"
icon_keyboard = "atmos_key"
- circuit = "/obj/item/weapon/circuitboard/atmos_automation"
+ circuit = /obj/item/weapon/circuitboard/atmos_automation
req_one_access_txt = "24;10"
Mtoollink = 1
diff --git a/code/modules/computer3/computers/law.dm b/code/modules/computer3/computers/law.dm
index 3d0cd0eb23e..1ee99e5b9cb 100644
--- a/code/modules/computer3/computers/law.dm
+++ b/code/modules/computer3/computers/law.dm
@@ -4,7 +4,6 @@
name = "AI Upload"
desc = "Used to upload laws to the AI."
icon_state = "frame-rnd"
- circuit = "/obj/item/part/board/circuit/aiupload"
var/mob/living/silicon/ai/current = null
var/opened = 0
@@ -56,7 +55,6 @@
name = "Cyborg Upload"
desc = "Used to upload laws to Cyborgs."
icon_state = "frame-rnd"
- circuit = "/obj/item/part/board/circuit/borgupload"
var/mob/living/silicon/robot/current = null
diff --git a/code/modules/mining/laborcamp/laborshuttle.dm b/code/modules/mining/laborcamp/laborshuttle.dm
index 41d54ca1279..e9566668b21 100644
--- a/code/modules/mining/laborcamp/laborshuttle.dm
+++ b/code/modules/mining/laborcamp/laborshuttle.dm
@@ -69,7 +69,7 @@ proc/move_labor_shuttle() //TODO: Security Access only; add moving the shuttle t
name = "Labor Shuttle Console"
icon = 'icons/obj/computer.dmi'
icon_state = "shuttle"
- circuit = "/obj/item/weapon/circuitboard/labor_shuttle"
+ circuit = /obj/item/weapon/circuitboard/labor_shuttle
var/location = 0 //0 = station, 1 = labor camp
req_access = list(access_brig)
var/hacked = 0
@@ -114,7 +114,7 @@ proc/move_labor_shuttle() //TODO: Security Access only; add moving the shuttle t
/obj/machinery/computer/labor_shuttle/one_way
name = "Prisoner Shuttle Console"
desc = "A one-way shuttle console, used to summon the shuttle to the labor camp."
- circuit = "/obj/item/weapon/circuitboard/one_way_shuttle"
+ circuit = /obj/item/weapon/circuitboard/labor_shuttle/one_way
req_access = list( )
/obj/machinery/computer/labor_shuttle/one_way/attack_hand(user as mob)
diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm
index 52fd9ad29fc..0710e90c2a2 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm
@@ -96,7 +96,7 @@
if(istype(A, /mob/living))
var/mob/living/L = A
L.visible_message("[src] pounces on [L]!", "[src] pounces on you!")
- L.Weaken(5)
+ apply_effect(5, WEAKEN, run_armor_check("chest", "melee"))
sleep(2)//Runtime prevention (infinite bump() calls on hulks)
step_towards(src,L)
diff --git a/code/modules/mob/living/carbon/human/human_attackalien.dm b/code/modules/mob/living/carbon/human/human_attackalien.dm
index e40030c9e0f..f948cdb2b3b 100644
--- a/code/modules/mob/living/carbon/human/human_attackalien.dm
+++ b/code/modules/mob/living/carbon/human/human_attackalien.dm
@@ -34,8 +34,9 @@
M.do_attack_animation(src)
var/randn = rand(1, 100)
if (randn <= 80)
+ var/obj/item/organ/external/affecting = get_organ(ran_zone(M.zone_sel.selecting))
playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1)
- Weaken(5)
+ apply_effect(5, WEAKEN, run_armor_check(affecting, "melee"))
for(var/mob/O in viewers(src, null))
if ((O.client && !( O.blinded )))
O.show_message(text("\red [] has tackled down []!", M, src), 1)
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index 4af3cf88499..56d197e3b88 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -77,7 +77,7 @@ emp_act
/mob/living/carbon/human/proc/getarmor_organ(var/obj/item/organ/external/def_zone, var/type)
if(!type || !def_zone) return 0
var/protection = 0
- var/list/body_parts = list(head, wear_mask, wear_suit, w_uniform)
+ var/list/body_parts = list(head, wear_mask, wear_suit, w_uniform, back, gloves, shoes, belt, s_store, glasses, l_ear, r_ear, wear_id) //Everything but pockets. Pockets are l_store and r_store. (if pockets were allowed, putting something armored, gloves or hats for example, would double up on the armor)
for(var/bp in body_parts)
if(!bp) continue
if(bp && istype(bp ,/obj/item/clothing))
diff --git a/code/modules/mob/living/carbon/human/npcs.dm b/code/modules/mob/living/carbon/human/npcs.dm
index 290c81723ee..b66a0ee52ba 100644
--- a/code/modules/mob/living/carbon/human/npcs.dm
+++ b/code/modules/mob/living/carbon/human/npcs.dm
@@ -10,4 +10,4 @@
spawn(1)
name = "Pun Pun"
real_name = name
- w_uniform = new /obj/item/clothing/under/punpun(src)
\ No newline at end of file
+ equip_to_slot(new /obj/item/clothing/under/punpun(src), slot_w_uniform)
\ No newline at end of file
diff --git a/code/modules/mob/living/silicon/robot/drone/drone_console.dm b/code/modules/mob/living/silicon/robot/drone/drone_console.dm
index 2e0dedb1461..b59f69ec3c0 100644
--- a/code/modules/mob/living/silicon/robot/drone/drone_console.dm
+++ b/code/modules/mob/living/silicon/robot/drone/drone_console.dm
@@ -4,7 +4,7 @@
icon_screen = "power"
icon_keyboard = "power_key"
req_access = list(access_engine_equip)
- circuit = "/obj/item/weapon/circuitboard/drone_control"
+ circuit = /obj/item/weapon/circuitboard/drone_control
//Used when pinging drones.
var/drone_call_area = "Engineering"
diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm
index 8546c793876..aa37549606b 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -471,6 +471,7 @@
src.modules += new /obj/item/weapon/matter_decompiler(src)
src.modules += new /obj/item/weapon/reagent_containers/spray/cleaner/drone(src)
src.modules += new /obj/item/weapon/soap(src)
+ src.modules += new /obj/item/device/t_scanner(src)
src.emag = new /obj/item/weapon/pickaxe/drill/cyborg/diamond(src)
@@ -499,4 +500,4 @@
var/mob/living/silicon/robot/R = src.loc
- return (src in R.module.modules)
+ return (src in R.module.modules)
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_animal/bot_swarm/swarmer.dm b/code/modules/mob/living/simple_animal/bot_swarm/swarmer.dm
index 530409bd517..d4cac27a309 100644
--- a/code/modules/mob/living/simple_animal/bot_swarm/swarmer.dm
+++ b/code/modules/mob/living/simple_animal/bot_swarm/swarmer.dm
@@ -227,6 +227,9 @@
/obj/item/stack/cable_coil/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)//Wiring would be too effective as a resource
S << "This object does not contain enough materials to work with."
+/obj/item/weapon/circuitboard/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
+ S << "This object does not contain enough materials to work with."
+
/obj/machinery/porta_turret/swarmer_act(mob/living/simple_animal/hostile/swarmer/S)
S << "Attempting to dismantle this machine would result in an immediate counterattack. Aborting."
@@ -323,8 +326,7 @@
if(istype(target, /obj/machinery/computer))
var/obj/machinery/computer/C = target
if(C.circuit)
- var/obj/item/weapon/circuitboard/circuit = text2path(C.circuit)
- new circuit(get_turf(M))
+ new C.circuit(get_turf(M))
qdel(target)
diff --git a/code/modules/nano/modules/virus2_creator.dm b/code/modules/nano/modules/virus2_creator.dm
new file mode 100644
index 00000000000..ad262f9ab5d
--- /dev/null
+++ b/code/modules/nano/modules/virus2_creator.dm
@@ -0,0 +1,142 @@
+/datum/nano_module/virus2
+ name = "Virus Creator"
+
+ var/mob/virus_target = null
+ var/datum/disease2/disease/curr_virus = null
+
+/datum/nano_module/virus2/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state)
+ var/data[0]
+
+ data["virus_target"] = virus_target
+ data["curr_virus"] = curr_virus ? curr_virus.uniqueID : null
+ if(curr_virus)
+ var/effects[0]
+ for(var/datum/disease2/effectholder/E in curr_virus.effects)
+ var/subeffect[0]
+ subeffect["name"] = E.effect.name
+ subeffect["stage"] = E.stage
+ subeffect["chance"] = E.chance
+ subeffect["multiplier"] = E.multiplier
+ subeffect["badness"] = E.effect.badness
+
+ effects.Add(list(subeffect))
+ data["virus_effects"] = effects
+
+ var/virusstats[0]
+ virusstats["antigen"] = antigens2string(curr_virus.antigen)
+ virusstats["spreadType"] = curr_virus.spreadtype
+ virusstats["affectedSpecies"] = list2text(curr_virus.affected_species, ", ")
+ virusstats["speed"] = curr_virus.speed
+ data["virusStats"] = virusstats
+
+
+
+ ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
+ if (!ui)
+ ui = new(user, src, ui_key, "virus2_creator.tmpl", "[src]", 800, 450, state = state)
+ ui.set_initial_data(data)
+ ui.open()
+ ui.set_auto_update(1)
+
+/datum/nano_module/virus2/Topic(href, href_list)
+ if(..())
+ return 1
+
+ if(href_list["setTarget"])
+ var/list/mob_list_l = list()
+ for(var/mob/living/carbon/human/H in mob_list)
+ mob_list_l += H
+ mob_list_l = sortList(mob_list_l)
+ mob_list_l += "Random"
+
+ var/newTarget = input(usr, "Who do you want to infect?", "Infection", "Random") as null|anything in mob_list_l
+ if(newTarget)
+ if(newTarget == "Random")
+ virus_target = null
+ else
+ if(ismob(newTarget))
+ virus_target = newTarget
+ return 1
+
+ if(href_list["createVirus"])
+ if(curr_virus)
+ if(alert(usr, "Would you like to delete the current virus and generate a new one?", "Regenerate Virus", "Yes", "No") == "Yes")
+ qdel(curr_virus)
+ curr_virus = null
+ else
+ return 0
+
+ var/datum/disease2/disease/new_virus = new()
+ new_virus.makerandom()
+ curr_virus = new_virus
+ new_virus.affected_species = list("Human","Unathi","Skrell","Tajaran","Vox","Kidan","Slime People","Grey","Diona", "Vulpkanin") //restore to default
+ usr << "New virus generated: [new_virus.uniqueID]."
+ return 1
+
+ if(href_list["deleteCurrVirus"])
+ if(curr_virus)
+ qdel(curr_virus)
+ curr_virus = null
+ return 1
+
+ if(href_list["changeEffect"])
+ if(curr_virus)
+ var/stage = text2num(href_list["changeEffect"])
+ if(stage)
+ var/list/L = list()
+
+ for(var/effect in (subtypesof(/datum/disease2/effect)))
+ var/datum/disease2/effect/E = new effect
+ if(initial(E.stage) == stage)
+ L[initial(E.name)] = E
+
+ var/datum/disease2/effectholder/holder = curr_virus.effects[stage]
+ if(holder)
+ var/datum/disease2/effect/current_effect = holder.effect
+
+ var/C = input("Select effect for stage [stage]:", "Stage [stage]", current_effect.name) as null|anything in L
+ if(!C)
+ return 0
+
+ var/datum/disease2/effect/applied_effect = L[C]
+ if(istype(applied_effect))
+ holder.effect = applied_effect
+ qdel(current_effect)
+ else
+
+ return 1
+
+ if(href_list["changeStat"])
+ if(curr_virus)
+ var/stat = href_list["changeStat"]
+ var/stage = text2num(href_list["cSEffect"])
+ if(stat && stage)
+ switch(stat)
+ if("C")
+ var/C = input(usr, "What would you like to change the chance to? ", "Edit Chance", null) as null|num
+ if(C)
+ var/datum/disease2/effectholder/holder = curr_virus.effects[stage]
+ if(holder)
+ holder.chance = Clamp(C, 0, holder.effect.chance_maxm)
+
+ if("M")
+ var/C = input(usr, "What would you like to change the multiplier to?", "Edit Multiplier", null) as null|num
+ if(C)
+ var/datum/disease2/effectholder/holder = curr_virus.effects[stage]
+ if(holder)
+ holder.multiplier = Clamp(C, 1, holder.effect.maxm)
+ return 1
+
+ if(href_list["spreadToTarget"])
+ if(curr_virus)
+ if(virus_target)
+ infect_virus2(virus_target, curr_virus, 1) //no protection from gods
+ else //random
+ var/list/mob_list_l = list()
+ for(var/mob/living/carbon/human/H in mob_list)
+ if(H.client)
+ mob_list_l += H
+
+ var/mob/living/carbon/human/H = pick(mob_list_l)
+ if(H && H.client)
+ infect_virus2(H, curr_virus, 1) //no protection from gods
\ No newline at end of file
diff --git a/code/modules/research/xenoarchaeology/genetics/reconstitutor.dm b/code/modules/research/xenoarchaeology/genetics/reconstitutor.dm
index 23413d4f0df..dc6bdc70521 100644
--- a/code/modules/research/xenoarchaeology/genetics/reconstitutor.dm
+++ b/code/modules/research/xenoarchaeology/genetics/reconstitutor.dm
@@ -15,7 +15,7 @@ datum/genesequence
icon = 'icons/obj/computer.dmi'
icon_keyboard = "med_key"
icon_screen = "dna"
- circuit = "/obj/item/weapon/circuitboard/reconstitutor"
+ circuit = /obj/item/weapon/circuitboard/reconstitutor
req_access = list(access_heads) //Only used for record deletion right now.
var/obj/machinery/clonepod/pod1 = 1 //Linked cloning pod.
var/temp = ""
@@ -42,7 +42,7 @@ datum/genesequence
name = "Fauna reconstitution console"
accepted_fossil_types = list(/obj/item/weapon/fossil/bone,/obj/item/weapon/fossil/shell,/obj/item/weapon/fossil/skull)
pod1 = null
- circuit = "/obj/item/weapon/circuitboard/reconstitutor/animal"
+ circuit = /obj/item/weapon/circuitboard/reconstitutor/animal
/obj/machinery/computer/reconstitutor/animal/initialize()
undiscovered_genesequences = master_controller.all_animal_genesequences.Copy()
diff --git a/code/modules/shuttles/whiteship.dm b/code/modules/shuttles/whiteship.dm
index e0d485afb11..7ae19d3482a 100644
--- a/code/modules/shuttles/whiteship.dm
+++ b/code/modules/shuttles/whiteship.dm
@@ -2,7 +2,7 @@
name = "medical ship control console"
req_access = list()
shuttle_tag = "White Ship"
- circuit = "/obj/item/weapon/circuitboard/white_ship"
+ circuit = /obj/item/weapon/circuitboard/white_ship
light_color = LIGHT_COLOR_DARKRED
/obj/machinery/computer/shuttle_control/multi/whiteship/attack_ai(user as mob)
diff --git a/code/modules/virus2/disease2.dm b/code/modules/virus2/disease2.dm
index f685bbe2b12..95b5ab60583 100644
--- a/code/modules/virus2/disease2.dm
+++ b/code/modules/virus2/disease2.dm
@@ -10,8 +10,8 @@
var/list/datum/disease2/effectholder/effects = list()
var/antigen = 0 // 16 bits describing the antigens, when one bit is set, a cure with that bit can dock here
var/max_stage = 4
- var/list/affected_species = list("Human","Unathi","Skrell","Tajaran","Vox","Kidan","Slime People","Grey","Diona", "Vulpkanin")
-
+ var/list/affected_species = list("Human","Unathi","Skrell","Tajaran","Vox","Kidan","Slime People","Grey","Diona", "Vulpkanin") //if this is changed, also change modules/nano/modules/virus2_creator.dm
+ //as you cannot use initial() with lists
/datum/disease2/disease/New()
uniqueID = rand(0,10000)
..()
diff --git a/icons/turf/floors.dmi b/icons/turf/floors.dmi
index 388011b8ca1..b3ce39511b5 100644
Binary files a/icons/turf/floors.dmi and b/icons/turf/floors.dmi differ
diff --git a/nano/templates/virus2_creator.tmpl b/nano/templates/virus2_creator.tmpl
new file mode 100644
index 00000000000..810bd8b124f
--- /dev/null
+++ b/nano/templates/virus2_creator.tmpl
@@ -0,0 +1,76 @@
+
+