diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm index ab50e7404a2..34b8387d3de 100644 --- a/_maps/map_files/cyberiad/cyberiad.dmm +++ b/_maps/map_files/cyberiad/cyberiad.dmm @@ -1458,7 +1458,7 @@ "aCb" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/carpet,/area/crew_quarters/courtroom) "aCc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/wood,/area/crew_quarters/courtroom) "aCd" = (/obj/structure/table/woodentable,/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/folder/blue{pixel_x = 5},/obj/item/device/megaphone,/turf/simulated/floor/plasteel{dir = 2; icon_state = "carpet"},/area/crew_quarters/courtroom) -"aCe" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/stool/bed/chair/comfy/black{dir = 8},/obj/machinery/camera{c_tag = "Courtroom Judge Committee"; dir = 8; network = list("Toxins","Research","SS13")},/turf/simulated/floor/plasteel{dir = 2; icon_state = "carpet"},/area/crew_quarters/courtroom) +"aCe" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/stool/bed/chair/comfy/black{dir = 8},/obj/machinery/camera{c_tag = "Courtroom Judge Committee"; dir = 8; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 2; icon_state = "carpet"},/area/crew_quarters/courtroom) "aCf" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/security/prison/cell_block/B) "aCg" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/machinery/door/window/brigdoor{dir = 8; id = "Cell 5"; name = "Cell 5"; req_access_txt = "2"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plasteel,/area/security/prison/cell_block/B) "aCh" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/security/prison/cell_block/B) @@ -2528,7 +2528,6 @@ "aWF" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) "aWG" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/eva) "aWH" = (/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) -"aWI" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_command{name = "Xeno Hardsuits"; req_access_txt = "18"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/eva) "aWJ" = (/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 32},/turf/simulated/floor/plasteel{icon_state = "bluecorner"},/area/hallway/primary/fore) "aWK" = (/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutral"},/area/crew_quarters/fitness) "aWL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/computer/security/telescreen/entertainment{pixel_x = 32},/turf/simulated/floor/plasteel{icon_state = "neutral"; dir = 4},/area/crew_quarters/fitness) @@ -2603,7 +2602,6 @@ "aYc" = (/obj/structure/table/reinforced,/obj/machinery/cell_charger,/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) "aYd" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/ai_monitored/storage/eva) "aYe" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/structure/table/reinforced,/obj/item/weapon/book/manual/evaguide,/obj/item/stack/tape_roll,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) -"aYf" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/weapon/tank/nitrogen,/obj/item/clothing/suit/space/eva/vox,/obj/item/clothing/mask/breath/vox,/obj/item/clothing/head/helmet/space/eva/vox,/turf/simulated/floor/plasteel{dir = 8; icon_state = "vault"; tag = "icon-vault (WEST)"},/area/ai_monitored/storage/eva) "aYg" = (/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{dir = 8; icon_state = "bluecorner"},/area/hallway/primary/fore) "aYh" = (/obj/machinery/door/firedoor,/turf/simulated/floor/plasteel{icon_state = "bluecorner"},/area/hallway/primary/fore) "aYi" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/crew_quarters/sleep) @@ -8427,7 +8425,7 @@ "dgc" = (/obj/machinery/embedded_controller/radio/airlock/airlock_controller{tag_airpump = "engineering_east_pump"; tag_exterior_door = "engineering_east_outer"; frequency = 1379; id_tag = "engineering_east_airlock"; tag_interior_door = "engineering_east_inner"; pixel_x = -25; req_access_txt = "10;13"; tag_chamber_sensor = "engineering_east_sensor"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "engineering_east_sensor"; pixel_x = -25; pixel_y = 12},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor/plating,/area/engine/engineering) "dgd" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1379; id_tag = "engineering_east_pump"},/turf/simulated/floor/plating,/area/engine/engineering) "dge" = (/obj/machinery/camera{c_tag = "Atmospherics South-West"; dir = 4; network = list("SS13")},/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/pipe/simple/visible/purple,/turf/simulated/floor/plasteel,/area/atmos) -"dgf" = (/obj/structure/table,/obj/item/pipe,/obj/item/device/radio{pixel_x = -6; pixel_y = 4},/obj/item/device/radio{pixel_x = 6; pixel_y = 4},/obj/item/device/radio,/turf/simulated/floor/plasteel,/area/atmos) +"dgf" = (/obj/structure/table,/obj/item/device/radio{pixel_x = -6; pixel_y = 4},/obj/item/device/radio{pixel_x = 6; pixel_y = 4},/obj/item/device/radio,/turf/simulated/floor/plasteel,/area/atmos) "dgg" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan{level = 2},/turf/simulated/floor/plasteel,/area/atmos) "dgh" = (/obj/machinery/atmospherics/unary/portables_connector,/turf/simulated/floor/plasteel,/area/atmos) "dgi" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{dir = 8; initialize_directions = 11; level = 2},/obj/machinery/meter,/turf/simulated/floor/plasteel,/area/atmos) @@ -9174,8 +9172,8 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaabaMsaSdaRUaSdaToaSfaSfaTpaSdaRUaSdaTqaTraTsaTtaGnaHSaPcaPcaGnaGnaGnaTuaTuaTuaIkaTuaTuaTuaTuaTuaHSaGnaGnaGnaGnaGnaGnaGnaRmaKdaStaaaaabaaaaabaaaaabaaaaabaaaaSuaSzaSAaTwaTxaTyaTzaTAaSAaPiaRwaTBaTBaTCaTDaTEaTFaTGaTFaTHaTIaTJaTBaTBaRwaSNaFFaTKaEjaSPaPyaOnaPzaLNaLPaMUaTLaTMaTNaTOaTPaTPaTQaTRaTPaTRaTSaTTaTUaTVaTWaTXaTYaKOaTfaKQaKQaKQaKQaKQaTfaGXaLcaGYaTZaUaaHaaGXaHaaLcaGYaGXaLcaMlaGXaUbaGYaGXaUcaGYaHaaUdaUeaGXaUfaGYaHaaIHaIHaMlaIHaUgaMqaUhaQUaUiaUjaUiaQUaUkaMqaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaLdaLdaSdaOQaSdaUnaUoaUpaUqaSdaOQaSdaSdaLdaSmaTnaGnaHSaHSaHSaHSaHSaHSaTuaUuaUvaUwaUxaUyaUzaUuaTuaTvaUBaUAaUAaUAaUAaUAaUAaUCaNxaStaabaUEaUEaUEaUEaUEaUEaUEaabaSuaSzaSAaUFaUGaUHaUIaUFaSAaPiaRwaUJaUJaUJaUKaULaSCaUMaSCaULaUNaUJaUJaUJaRwaSNaFFaUOaEjaSPaPyaMTaPzaLNaLPaOoaUPaUQaUQaUQaUQaUQaUQaUQaURaUQaUSaUSaUSaUSaUSaUTaGXaKOaTfaKQaKQaKQaKQaKQaTfaGXaGXaGYaUUaUaaHaaUVaGXaGYaGYaGXaGYaMlaHaaGYaGYaGXaGYaGYaHaaMlaGZaGXaGYaGYaHaaUWaGYaMlaGYaUXaUYaUYaMqaMqaMqaMqaMqaMqaMqaMraMraMraMraMraabaaaaaaaaaaaaaaaaaaaaaaaaabpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSdaRUaSdaSdaSdaSdaSdaSdaRUaSdaUZaLdaVaaVbaVcaVcaVcaVcaVcaVcaVdaTuaUuaVeaUwaVfaVeaVeaUuaTuaVgaUDaViaViaViaViaViaViaViaViaVjaaaaUEaVkaVlaVmaVnaVoaUEaaaaSuaSzaSAaVpaVqaVraVsaUFaSAaPiaRwaVtaVtaTCaVuaVvaTFaTGaTFaVvaVwaVxaTBaTBaRwaSNaFFaSOaEjaVyaKAdqtaPzaLNaLPaMUaUPaUQaVAaVBaVCaVCaUQaVDaVEaVFaUSaVGaVHaVIaUSaVJaGXaaaaVKaVLaVLaVLaVLaVLaVMaaaaGXaGYaVNaVOaHaaHaaGXaGXaHaaHaaVPaVQaHaaGXaHPaGXaGXaHaaHaaVRaVSaGXaGXaGXaQLaUWaGYaMlaGYaUXaHOaHbaOFaYPbcDaVhbcDaYPaYPaYPaabaabaabaabaabaabaabaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVVaVWaVXaVWaVWaVYaVZaVWaVWaVXaWaaWbaLdaToaWcaVcaWdaWeaWfaWgaWhaWiaTuaUuaVeaUwaWjaVeaVeaUuaTuaWkaWlaWmaWnaWoaWpaWqaWraWsaWtaVjaabaUEaWuaWvaWwaWxaWyaUEaabaSuaSzaSAaWzaWAaWBaWCaWDaSAaPiaRwaSBaSCaWEaWFaULaSCaWGaSCaULaWHaWIaSCaSMaRwaSNaFFaWJaEjaSPaMSaLOaPzaLNaLPaWKaWLaUQaWMaVEaVEaVEaWNaWOaWPaWQaUSaWRaWSaWTaWUaWVaHPaaaaaaaaaaaaaaaaaaaaaaaaaaaaGXaWWaWXaWYaWZaXaaGXaNgaGYaQIaMlaGYaGXaaaaGXaGYaGYaGYaGYaMlaXbaXcaXdaXdaXdaXdaXeaXfaXgaXhaXiaXjaXiaXkaVTaVTaVUaXmaXlaXnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVVaWaaVWaXqaXraXsaXtaXuaXvaXwaXxaXyaXzaXAaXBaSdaToaXCaVcaXDaXEaXFaXGaXFaXHaTuaXIaVeaXJaXKaXLaXKaXMaXNaXOaXPaXQaXQaXQaXQaXQaXQaXRaXSaVjaaaaUEaXTaWvaXUaWxaXVaUEaaaaSuaSzaSAaXWaXXaXYaXZaYaaSAaPiaRwaYbaYbaTCaYcaVvaTFaYdaTFaVvaYeaTJaYfaYfaRwaYgaIraYhaEjaSPaMSaYiaYiaYiaYiaYjaYkaYlaYmaYnaYoaYoaYoaYpaYoaYqaYraYsaYtaYuaYraYvaYwaHPaGXaGXaGXaGXaGXaGXaGXaGXaGXaGXaGXaGXaYxaGXaGXaGXaGXaGYaMlaWWaHNaabaHNaGYaYyaYzaYAaYBaYCaYDaYEaYEaYEaYEaYFaYGaYHaYIaYJaYKaYJaYLaYJaYJaYMaXoaYOaYPaYQaYRaYSaYSaYSaYSaYSaYSaYSaYSaYSafXajcaaaaaaaaaaaaaaaaaaaaaaYTaYUaYVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVVaVWaVXaVWaVWaVYaVZaVWaVWaVXaWaaWbaLdaToaWcaVcaWdaWeaWfaWgaWhaWiaTuaUuaVeaUwaWjaVeaVeaUuaTuaWkaWlaWmaWnaWoaWpaWqaWraWsaWtaVjaabaUEaWuaWvaWwaWxaWyaUEaabaSuaSzaSAaWzaWAaWBaWCaWDaSAaPiaRwaSBaSCaWEaWFaULaSCaWGaSCaULaWHaSLaSCaSMaRwaSNaFFaWJaEjaSPaMSaLOaPzaLNaLPaWKaWLaUQaWMaVEaVEaVEaWNaWOaWPaWQaUSaWRaWSaWTaWUaWVaHPaaaaaaaaaaaaaaaaaaaaaaaaaaaaGXaWWaWXaWYaWZaXaaGXaNgaGYaQIaMlaGYaGXaaaaGXaGYaGYaGYaGYaMlaXbaXcaXdaXdaXdaXdaXeaXfaXgaXhaXiaXjaXiaXkaVTaVTaVUaXmaXlaXnaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVVaWaaVWaXqaXraXsaXtaXuaXvaXwaXxaXyaXzaXAaXBaSdaToaXCaVcaXDaXEaXFaXGaXFaXHaTuaXIaVeaXJaXKaXLaXKaXMaXNaXOaXPaXQaXQaXQaXQaXQaXQaXRaXSaVjaaaaUEaXTaWvaXUaWxaXVaUEaaaaSuaSzaSAaXWaXXaXYaXZaYaaSAaPiaRwaYbaYbaTCaYcaVvaTFaYdaTFaVvaYeaTJaTBaTBaRwaYgaIraYhaEjaSPaMSaYiaYiaYiaYiaYjaYkaYlaYmaYnaYoaYoaYoaYpaYoaYqaYraYsaYtaYuaYraYvaYwaHPaGXaGXaGXaGXaGXaGXaGXaGXaGXaGXaGXaGXaYxaGXaGXaGXaGXaGYaMlaWWaHNaabaHNaGYaYyaYzaYAaYBaYCaYDaYEaYEaYEaYEaYFaYGaYHaYIaYJaYKaYJaYLaYJaYJaYMaXoaYOaYPaYQaYRaYSaYSaYSaYSaYSaYSaYSaYSaYSafXajcaaaaaaaaaaaaaaaaaaaaaaYTaYUaYVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaXAaYWaYXaYYaXzaYZaXsaYZaXsaYZaXsaYZaXzaZaaZbaSdaToaZcaVcaZdaZeaZfaZgaZhaUmaTuaZjaUraZkaZlaZmaZnaZoaTuaZpaZqaXQaXQaXQaXQaXQaXQaXRaZraVjaabaUEaZsaZtaZuaZvaZwaUEaabaSuaSzaSAaZxaZyaZzaZAaZBaSAaPiaRwaUJaUJaUJaZCaULaSCaUMaSCaULaZDaUJaUJaUJaRwaZEaZFaZGaEjaVyaZHaZIaZIaZIaZJaZKaZLaZMaZNaZOaZMaZPaZQaZRaZMaZSaZTaZUaZVaZWaUSaZXaZYaZZbaabaaaZYbabbacbacbacbacbacbadbaebacbafbagbahbaibajbakbalbambanbaobanbapbaqaGYaGXbarbasbatbaubavbawbaxbaybazbaAbazbaBbaCbaDbaEbaFbaGbaHbaIbaJbaKbaLaYPbaMbaNbaObaPbaQbaRbaSbaTbaUbaVaaaaaaaaaaaaaaaaaaaaaaYTbaWbaXbaYaYVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaZaXsaXsaVXaXzaYZaXsaYZbbaaYZaXsaYZaXzaZaaZbaSdaTobbbaVcaVcbbcaUtaUsaUtaVcaTuaTuaTuaTubbfbbgbbhbbiaTubbjbbkbblaXQaXQbbmaXQbbnbbobbpaVjaaaaUEaUEbbqbbrbbqaUEaUEaaaaSuaSzaSAbbsbbtbbuaZAbbvaSAaPiaRwaSBaSCbbwaWFaULaSCaUMaSCaULaWHbbxaRwaRwaRwbbybbzbbAbbBbbCbbDatGatGbbEbbFbbGbbHaUQbbIaVEaUQbbJaUQbbKaUQbbLbbMbbNbbObbPbbQbbRbbSbbTbbUbbVbbWbbXbbVbbVbbYbbVbbSbbZbbSaXjbcabbSbcbbccbcdbcebcfbcgbchbcibcjbckbclaXibcmbcnbcobcpbcqbcrbcsbctbaybcubcvbazbcwbcxbcybczbaFbcAbcBbcCbcDbcEbcFaYPbcGbcHbcHbcIbaTbaTbaTbaTbaUbaVaaaaaaaaaaaaaaaaaaaYTbaWbcJbcKbcLbaYaYVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaXAbcMbcNaYYaXzaYZaXsaYZaXsaYZaXsaYZaXzaZaaZbaSdaTobcOaZibcQbcRbcSbcSaSfbcTbcUbcVbcWbcXbcYbcZaVebdaaTubdbbdcbddbdebdfbdgbdhbdibdjbdkaVjaaaaabaaabbdbdmbbdaaaaabaaaaSuaSzaSAbdnbdobdpbdqbdraSAaPiaRwbdsbdtaTCbdubdvaTFbdwaTFbdxbdybdzaRwbdAbdBbdCbdDbdEbdFbdGbdHaaaaaabbEbdIbdJbdKaUQbdLbdMaVEaVEbdNaVEaVEaVEbdOaUSbdPaUSbdQbdRaUSbdSaUSbdTbdUbdVbdWbdXbdYbdTbdZbeabebbecbebbebbebbebbedbeebebbefbegbehbeibebbejaGYbaubekbcpbelbembenbeobepbeqberbesbazbetbeubevbewbexbcAbcBbcCbcDbaKbeyaYPbezbcHbcHbcIbaTbaTbaTbaTbaUbaVaaaaaaaaaaaaaaaaaaaYUbeAbeBbeCbeBbeDaYUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa diff --git a/_maps/map_files/cyberiad/z2.dmm b/_maps/map_files/cyberiad/z2.dmm index 64462b9f731..9a0255b509d 100644 --- a/_maps/map_files/cyberiad/z2.dmm +++ b/_maps/map_files/cyberiad/z2.dmm @@ -1494,7 +1494,7 @@ rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaq rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjacaeabababaNaNaNaNaNaNaNaNaNaUabababacamnjnjqXnjbdnjiwagiHagiHagnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNaNaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabababababaNaNaNaNaNaNaNaNaNalabababaonjnjoHoIjtoOnjnjnjnjnjnjnjnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabababababaNaNaNaNaNaNaNaNaNalaeabadaonjaLoOoOoOoOfZoQoRnjfYjMmgnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN -rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabosabababaiaNaNaNaNaNaNaNaiababababjsnjpaoOmfmfpcoOpdpepWpXpXganjnjnjnjnjnjnjnjnjnjnjnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN +rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabacabababaiaNaNaNaNaNaNaNaiababababjsnjpaoOmfmfpcoOpdpepWpXpXganjnjnjnjnjnjnjnjnjnjnjnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN rErErErErErErErHrErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabababababababaNaNaNaNaNiwagagagagiHamnjplmfpmjNmfoOmkppnjpXggnjnjghgjgigxgxhggxgxhxhGnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjabababaeabababaNaNaNaNaNpupvpvpvpvpvoCnjmhmfpwpxmfoOmkppnjnjnjnjnjgjgiiuotiviFivouiGhxnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN rErErErErErErErErErErErErErErEaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaqaNbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWbWaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNnjacabaiaNaNaNaNaNaNaNaNaNpypzpApzpzpzpzpCoOJboOoOoOoOmkppnjnjnjnjnjgjiIotiviJiSiKivouiTnjaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaNaN diff --git a/code/LINDA/LINDA_system.dm b/code/LINDA/LINDA_system.dm index 3c2d0cd34a7..cbb3c546990 100644 --- a/code/LINDA/LINDA_system.dm +++ b/code/LINDA/LINDA_system.dm @@ -35,10 +35,10 @@ atom/movable/proc/CanAtmosPass() return 1 -atom/proc/CanPass(atom/movable/mover, turf/target, height=1.5, air_group = 0) - return (!density || !height || air_group) +atom/proc/CanPass(atom/movable/mover, turf/target, height=1.5) + return (!density || !height) -turf/CanPass(atom/movable/mover, turf/target, height=1.5,air_group=0) +turf/CanPass(atom/movable/mover, turf/target, height=1.5) if(!target) return 0 if(istype(mover)) // turf/Enter(...) will perform more advanced checks @@ -49,10 +49,10 @@ turf/CanPass(atom/movable/mover, turf/target, height=1.5,air_group=0) return 0 for(var/obj/obstacle in src) - if(!obstacle.CanPass(mover, target, height, air_group)) + if(!obstacle.CanPass(mover, target, height)) return 0 for(var/obj/obstacle in target) - if(!obstacle.CanPass(mover, src, height, air_group)) + if(!obstacle.CanPass(mover, src, height)) return 0 return 1 diff --git a/code/__DEFINES/role_preferences.dm b/code/__DEFINES/role_preferences.dm index 667c7152e85..1b848686bc3 100644 --- a/code/__DEFINES/role_preferences.dm +++ b/code/__DEFINES/role_preferences.dm @@ -8,6 +8,7 @@ //then you MUST update the database! // If you're adding a new role, remember to update modules/admin/topic.dm, so admins can dish out // justice if someone's abusing your role +#define ROLE_SYNDICATE "Syndicate" #define ROLE_TRAITOR "traitor" #define ROLE_OPERATIVE "operative" #define ROLE_CHANGELING "changeling" @@ -37,7 +38,7 @@ #define ROLE_MORPH "morph" #define ROLE_ERT "emergency response team" #define ROLE_NYMPH "Dionaea" -#define ROLE_GSPIDER "giant spider" +#define ROLE_GSPIDER "giant spider" //Missing assignment means it's not a gamemode specific role, IT'S NOT A BUG OR ERROR. diff --git a/code/game/gamemodes/changeling/powers/panacea.dm b/code/game/gamemodes/changeling/powers/panacea.dm index 4b8e002d576..8ae82a0e788 100644 --- a/code/game/gamemodes/changeling/powers/panacea.dm +++ b/code/game/gamemodes/changeling/powers/panacea.dm @@ -14,7 +14,7 @@ var/mob/living/simple_animal/borer/B = user.has_brain_worms() if(B) if(B.controlling) - B.detatch() + B.detach() B.leave_host() if(iscarbon(user)) var/mob/living/carbon/C = user diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm index 3af75d1f14d..2e5fa3cfe61 100644 --- a/code/game/gamemodes/cult/cult.dm +++ b/code/game/gamemodes/cult/cult.dm @@ -176,8 +176,8 @@ var/global/list/all_cults = list() var/datum/action/innate/cultcomm/C = new() C.Grant(cult_mind.current) cult_mind.current.create_attack_log("Has been converted to the cult!") - if(jobban_isbanned(cult_mind.current, ROLE_CULTIST)) - replace_jobbaned_player(cult_mind.current, ROLE_CULTIST) + if(jobban_isbanned(cult_mind.current, ROLE_CULTIST) || jobban_isbanned(cult_mind.current, ROLE_SYNDICATE)) + replace_jobbanned_player(cult_mind.current, ROLE_CULTIST) update_cult_icons_added(cult_mind) if(GAMEMODE_IS_CULT) var/datum/game_mode/cult/cult_mode = ticker.mode diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm index 28600fff695..a83a4551dc3 100644 --- a/code/game/gamemodes/cult/runes.dm +++ b/code/game/gamemodes/cult/runes.dm @@ -949,7 +949,7 @@ var/list/teleport_runes = list() return list() var/list/ghosts_on_rune = list() for(var/mob/dead/observer/O in get_turf(src)) - if(O.client && !jobban_isbanned(O, ROLE_CULTIST)) + if(O.client && !jobban_isbanned(O, ROLE_CULTIST) && !jobban_isbanned(O, ROLE_SYNDICATE)) ghosts_on_rune |= O if(!ghosts_on_rune.len) to_chat(user, "There are no spirits near [src]!") @@ -962,7 +962,7 @@ var/list/teleport_runes = list() var/mob/living/user = invokers[1] var/list/ghosts_on_rune = list() for(var/mob/dead/observer/O in get_turf(src)) - if(O.client && !jobban_isbanned(O, ROLE_CULTIST)) + if(O.client && !jobban_isbanned(O, ROLE_CULTIST) && !jobban_isbanned(O, ROLE_SYNDICATE)) ghosts_on_rune |= O var/mob/dead/observer/ghost_to_spawn = pick(ghosts_on_rune) var/mob/living/carbon/human/dummy/new_human = new(get_turf(src)) diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index 2a9c9851478..59f4b79c84d 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -440,7 +440,7 @@ proc/get_nt_opposed() nukecode = bomb.r_code return nukecode -/datum/game_mode/proc/replace_jobbaned_player(mob/living/M, role_type) +/datum/game_mode/proc/replace_jobbanned_player(mob/living/M, role_type) var/list/mob/dead/observer/candidates = pollCandidates("Do you want to play as a [role_type]?", role_type, 0, 100) var/mob/dead/observer/theghost = null if(candidates.len) diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index e634a47c590..4377a0038eb 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -133,7 +133,7 @@ playsound(src.loc, meteorsound, 40, 1) get_hit() -/obj/effect/meteor/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) +/obj/effect/meteor/CanPass(atom/movable/mover, turf/target, height=0) return istype(mover, /obj/effect/meteor) ? 1 : ..() /obj/effect/meteor/proc/ram_turf(var/turf/T) diff --git a/code/game/gamemodes/miniantags/borer/borer.dm b/code/game/gamemodes/miniantags/borer/borer.dm index 4cd285b5887..00d353a222d 100644 --- a/code/game/gamemodes/miniantags/borer/borer.dm +++ b/code/game/gamemodes/miniantags/borer/borer.dm @@ -2,7 +2,7 @@ name = "host brain" real_name = "host brain" -/mob/living/captive_brain/say(var/message) +/mob/living/captive_brain/say(message) if(client) if(client.prefs.muted & MUTE_IC) @@ -43,7 +43,7 @@ to_chat(B.host, "You feel the captive mind of [src] begin to resist your control.") var/delay = (rand(350,450) + B.host.brainloss) - addtimer(src, "return_control", delay) + addtimer(src, "return_control", delay, FALSE, B) /mob/living/captive_brain/proc/return_control(mob/living/simple_animal/borer/B) if(!B || !B.controlling) @@ -53,7 +53,7 @@ to_chat(src, "With an immense exertion of will, you regain control of your body!") to_chat(B.host, "You feel control of the host brain ripped from your grasp, and retract your probosci before the wild neural impulses can damage you.") - B.detatch() + B.detach() /mob/living/simple_animal/borer name = "cortical borer" @@ -145,7 +145,7 @@ if(client.statpanel == "Status") stat("Chemicals", chemicals) -/mob/living/simple_animal/borer/say(message) +/mob/living/simple_animal/borer/say(var/message) var/datum/language/dialect = parse_language(message) if(!dialect) dialect = get_default_language() @@ -558,7 +558,7 @@ if(!host) return if(controlling) - detatch() + detach() GrantBorerActions() RemoveInfestActions() forceMove(get_turf(host)) @@ -702,7 +702,7 @@ if(B && B.host_brain) to_chat(src, "You withdraw your probosci, releasing control of [B.host_brain]") - B.detatch() + B.detach() else log_runtime(EXCEPTION("Missing borer or missing host brain upon borer release."), src) @@ -739,7 +739,7 @@ to_chat(src, "You need 100 chemicals to reproduce!") return -/mob/living/simple_animal/borer/proc/detatch() +/mob/living/simple_animal/borer/proc/detach() if(!host || !controlling) return diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm index 1a42ae58d61..08fbf0d4cc7 100644 --- a/code/game/gamemodes/revolution/revolution.dm +++ b/code/game/gamemodes/revolution/revolution.dm @@ -248,8 +248,8 @@ rev_mind.current.create_attack_log("Has been converted to the revolution!") rev_mind.special_role = SPECIAL_ROLE_REV update_rev_icons_added(rev_mind) - if(jobban_isbanned(rev_mind.current, ROLE_REV)) - replace_jobbaned_player(rev_mind.current, ROLE_REV) + if(jobban_isbanned(rev_mind.current, ROLE_REV) || jobban_isbanned(rev_mind.current, ROLE_SYNDICATE)) + replace_jobbanned_player(rev_mind.current, ROLE_REV) return 1 ////////////////////////////////////////////////////////////////////////////// //Deals with players being converted from the revolution (Not a rev anymore)// // Modified to handle borged MMIs. Accepts another var if the target is being borged at the time -- Polymorph. diff --git a/code/game/gamemodes/shadowling/shadowling.dm b/code/game/gamemodes/shadowling/shadowling.dm index 10dac6414d2..97f609ca9ff 100644 --- a/code/game/gamemodes/shadowling/shadowling.dm +++ b/code/game/gamemodes/shadowling/shadowling.dm @@ -162,8 +162,8 @@ Made by Xhuis to_chat(new_thrall_mind.current, "Your body has been irreversibly altered. The attentive can see this - you may conceal it by wearing a mask.") to_chat(new_thrall_mind.current, "Though not nearly as powerful as your masters, you possess some weak powers. These can be found in the Thrall Abilities tab.") to_chat(new_thrall_mind.current, "You may communicate with your allies by speaking in the Shadowling Hivemind (:8).") - if(jobban_isbanned(new_thrall_mind.current, ROLE_SHADOWLING)) - replace_jobbaned_player(new_thrall_mind.current, ROLE_SHADOWLING) + if(jobban_isbanned(new_thrall_mind.current, ROLE_SHADOWLING) || jobban_isbanned(new_thrall_mind.current, ROLE_SYNDICATE)) + replace_jobbanned_player(new_thrall_mind.current, ROLE_SHADOWLING) return 1 diff --git a/code/game/jobs/job/job.dm b/code/game/jobs/job/job.dm index 01acc3a0d53..4d0b4d51dd3 100644 --- a/code/game/jobs/job/job.dm +++ b/code/game/jobs/job/job.dm @@ -228,13 +228,17 @@ var/datum/job/J = job_master.GetJobType(jobtype) if(!J) J = job_master.GetJob(H.job) + + var/alt_title + if(H.mind) + alt_title = H.mind.role_alt_title var/obj/item/weapon/card/id/C = H.wear_id if(istype(C)) C.access = J.get_access() C.registered_name = H.real_name C.rank = J.title - C.assignment = J.title + C.assignment = alt_title ? alt_title : J.title C.sex = capitalize(H.gender) C.age = H.age C.name = "[C.registered_name]'s ID Card ([C.assignment])" diff --git a/code/game/machinery/OpTable.dm b/code/game/machinery/OpTable.dm index 0b053831b49..7cae113f0ba 100644 --- a/code/game/machinery/OpTable.dm +++ b/code/game/machinery/OpTable.dm @@ -61,8 +61,8 @@ qdel(src) return -/obj/machinery/optable/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(air_group || (height==0)) return 1 +/obj/machinery/optable/CanPass(atom/movable/mover, turf/target, height=0) + if(height==0) return 1 if(istype(mover) && mover.checkpass(PASSTABLE)) return 1 diff --git a/code/game/machinery/computer/HolodeckControl.dm b/code/game/machinery/computer/HolodeckControl.dm index aa834941d78..71cc831bfdb 100644 --- a/code/game/machinery/computer/HolodeckControl.dm +++ b/code/game/machinery/computer/HolodeckControl.dm @@ -516,7 +516,7 @@ visible_message("[user] dunks [W] into the [src]!") return -/obj/structure/holohoop/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) +/obj/structure/holohoop/CanPass(atom/movable/mover, turf/target, height=0) if(istype(mover,/obj/item) && mover.throwing) var/obj/item/I = mover if(istype(I, /obj/item/projectile)) @@ -528,7 +528,7 @@ visible_message("\The [I] bounces off of \the [src]'s rim!") return 0 else - return ..(mover, target, height, air_group) + return ..(mover, target, height) /obj/machinery/readybutton name = "Ready Declaration Device" diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm index c20d8a8bd57..3ba162678ea 100644 --- a/code/game/machinery/deployable.dm +++ b/code/game/machinery/deployable.dm @@ -115,8 +115,8 @@ for reference: qdel(src) return -/obj/structure/barricade/CanPass(atom/movable/mover, turf/target, height=0, air_group=0)//So bullets will fly over and stuff. - if(air_group || (height==0)) +/obj/structure/barricade/CanPass(atom/movable/mover, turf/target, height=0)//So bullets will fly over and stuff. + if(height==0) return 1 if(istype(mover) && mover.checkpass(PASSTABLE)) return 1 @@ -257,8 +257,8 @@ for reference: src.explode() return - CanPass(atom/movable/mover, turf/target, height=0, air_group=0)//So bullets will fly over and stuff. - if(air_group || (height==0)) + CanPass(atom/movable/mover, turf/target, height=0)//So bullets will fly over and stuff. + if(height==0) return 1 if(istype(mover) && mover.checkpass(PASSTABLE)) return 1 diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 3c2c13254cf..ba861667045 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -642,7 +642,7 @@ About the new airlock wires panel: if(user) src.attack_ai(user) -/obj/machinery/door/airlock/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) +/obj/machinery/door/airlock/CanPass(atom/movable/mover, turf/target, height=0) if(src.isElectrified()) if(istype(mover, /obj/item)) var/obj/item/i = mover @@ -891,8 +891,12 @@ About the new airlock wires panel: if(arePowerSystemsOn()) var/obj/item/weapon/crowbar/power/P = C - playsound(src, 'sound/machines/airlock_alien_prying.ogg',100,1) //is it aliens or just the CE being a dick? + playsound(src, 'sound/machines/airlock_alien_prying.ogg', 100, 1) //is it aliens or just the CE being a dick? + user.visible_message("[user] starts forcing [src] with \the [P]...", \ + "You begin forcing [src] with \the [P]...") if(do_after(user, P.airlock_open_time, target = src)) + user.visible_message("[user] forces [src] with \the [P].", \ + "You force [src] with \the [P].") open(2) if(density && !open(2)) to_chat(user, "Despite your attempts, the [src] refuses to open.") diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index e1532051632..7ae11e35ec2 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -39,19 +39,23 @@ else layer = open_layer + update_dir() + update_freelook_sight() + airlocks += src + +/obj/machinery/door/setDir(newdir) + ..() + update_dir() +/obj/machinery/door/proc/update_dir() if(width > 1) if(dir in list(EAST, WEST)) bound_width = width * world.icon_size bound_height = world.icon_size else bound_width = world.icon_size - bound_height = width * world.icon_size - - update_freelook_sight() - airlocks += src - return - + bound_height = width * world.icon_size + /obj/machinery/door/initialize() air_update_turf(1) ..() @@ -87,8 +91,7 @@ return -/obj/machinery/door/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(air_group) return 0 +/obj/machinery/door/CanPass(atom/movable/mover, turf/target, height=0) if(istype(mover) && mover.checkpass(PASSGLASS)) return !opacity return !density diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index 63fed84088a..194d5655eb1 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -36,6 +36,14 @@ if(!density) return ..() return 0 + +/obj/machinery/door/firedoor/ex_act(severity) + switch(severity) + if(1.0) + qdel(src) + if(2.0) + if(prob(50)) + qdel(src) /obj/machinery/door/firedoor/power_change() if(powered(power_channel)) @@ -93,7 +101,6 @@ user.visible_message("[user] forces \the [src] with [C].", "You force \the [src] with [C].") if(density) - autoclose = TRUE open() else close() @@ -110,7 +117,6 @@ if(do_after(user, force_open_time, target = src)) user.visible_message("[user] forces \the [src].", \ "You force \the [src].") - autoclose = TRUE open() else if(glass) user.changeNext_move(CLICK_CD_MELEE) @@ -160,9 +166,12 @@ active_alarm = FALSE update_icon() -/obj/machinery/door/firedoor/open() +/obj/machinery/door/firedoor/open(auto_close = TRUE) . = ..() - latetoggle() + latetoggle(auto_close) + + if(auto_close) + autoclose = TRUE /obj/machinery/door/firedoor/close() . = ..() @@ -174,22 +183,22 @@ if(active_alarm) . = ..() -/obj/machinery/door/firedoor/proc/latetoggle() +/obj/machinery/door/firedoor/proc/latetoggle(auto_close = TRUE) if(operating || stat & NOPOWER || !nextstate) return switch(nextstate) if(OPEN) nextstate = null - open() + open(auto_close) if(CLOSED) nextstate = null close() -/obj/machinery/door/firedoor/proc/forcetoggle(magic = FALSE) +/obj/machinery/door/firedoor/proc/forcetoggle(magic = FALSE, auto_close = TRUE) if(!magic && (operating || stat & NOPOWER)) return if(density) - open() + open(auto_close) else close() diff --git a/code/game/machinery/doors/unpowered.dm b/code/game/machinery/doors/unpowered.dm index 90e71dc7b83..a8236f0817c 100644 --- a/code/game/machinery/doors/unpowered.dm +++ b/code/game/machinery/doors/unpowered.dm @@ -3,20 +3,18 @@ var/locked = 0 explosion_block = 1 - Bumped(atom/AM) - if(src.locked) - return - ..() +/obj/machinery/door/unpowered/Bumped(atom/AM) + if(locked) return + ..() - attackby(obj/item/I as obj, mob/user as mob, params) - if(istype(I, /obj/item/weapon/card/emag)||istype(I, /obj/item/weapon/melee/energy/blade)) return - if(src.locked) return - ..() +/obj/machinery/door/unpowered/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/weapon/card/emag) || istype(I, /obj/item/weapon/melee/energy/blade)) return - - + if(locked) + return + return ..() /obj/machinery/door/unpowered/shuttle icon = 'icons/turf/shuttle.dmi' diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index b40263599f5..19400444fb8 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -44,7 +44,7 @@ FIRE ALARM icon_state = "firex" else if(stat & NOPOWER) icon_state = "firep" - else if(!src.detecting) + else if(!detecting) icon_state = "fire1" else icon_state = "fire0" @@ -61,15 +61,15 @@ FIRE ALARM if(!emagged && detecting && temperature > T0C + 200) alarm() // added check of detector status here -/obj/machinery/firealarm/attack_ai(mob/user as mob) - src.add_hiddenprint(user) - return src.attack_hand(user) +/obj/machinery/firealarm/attack_ai(mob/user) + add_hiddenprint(user) + return attack_hand(user) -/obj/machinery/firealarm/attack_ghost(mob/user as mob) - return src.attack_hand(user) +/obj/machinery/firealarm/attack_ghost(mob/user) + ui_interact(user) /obj/machinery/firealarm/bullet_act(BLAH) - return src.alarm() + return alarm() /obj/machinery/firealarm/emp_act(severity) @@ -77,8 +77,8 @@ FIRE ALARM alarm(rand(30/severity, 60/severity)) ..() -/obj/machinery/firealarm/attackby(obj/item/W as obj, mob/user as mob, params) - src.add_fingerprint(user) +/obj/machinery/firealarm/attackby(obj/item/W, mob/user, params) + add_fingerprint(user) if(istype(W, /obj/item/weapon/screwdriver) && buildstage == 2) wiresexposed = !wiresexposed @@ -97,7 +97,7 @@ FIRE ALARM else if(istype(W, /obj/item/weapon/wirecutters)) // cutting the wires out to_chat(user, "You cut the wires!") - playsound(src.loc, W.usesound, 50, 1) + playsound(loc, W.usesound, 50, 1) var/obj/item/stack/cable_coil/new_coil = new /obj/item/stack/cable_coil() new_coil.amount = 5 new_coil.loc = user.loc @@ -165,7 +165,7 @@ FIRE ALARM stat |= NOPOWER update_icon() -/obj/machinery/firealarm/attack_hand(mob/user as mob) +/obj/machinery/firealarm/attack_hand(mob/user) if(stat & (NOPOWER|BROKEN) || buildstage != 2) return 1 @@ -221,10 +221,10 @@ FIRE ALARM else if(href_list["tp"]) var/tp = text2num(href_list["tp"]) time += tp - time = min(max(round(src.time), 0), 120) + time = min(max(round(time), 0), 120) /obj/machinery/firealarm/proc/reset() - if(!( src.working )) + if(!( working )) return var/area/A = get_area(src) A.fire_reset() @@ -233,23 +233,23 @@ FIRE ALARM return /obj/machinery/firealarm/proc/alarm(var/duration = 0) - if(!( src.working)) + if(!( working)) return var/area/A = get_area(src) for(var/obj/machinery/firealarm/FA in A) fire_alarm.triggerAlarm(loc, FA, duration) update_icon() - //playsound(src.loc, 'sound/ambience/signal.ogg', 75, 0) + //playsound(loc, 'sound/ambience/signal.ogg', 75, 0) return -/obj/machinery/firealarm/New(loc, dir, building) +/obj/machinery/firealarm/New(location, direction, building) ..() - if(loc) - src.loc = loc + if(location) + loc = location - if(dir) - src.dir = dir + if(direction) + dir = direction if(building) buildstage = 0 @@ -257,11 +257,11 @@ FIRE ALARM pixel_x = (dir & 3)? 0 : (dir == 4 ? -24 : 24) pixel_y = (dir & 3)? (dir ==1 ? -24 : 24) : 0 - if(is_station_contact(src.z)) + if(is_station_contact(z)) if(security_level) - src.overlays += image('icons/obj/monitors.dmi', "overlay_[get_security_level()]") + overlays += image('icons/obj/monitors.dmi', "overlay_[get_security_level()]") else - src.overlays += image('icons/obj/monitors.dmi', "overlay_green") + overlays += image('icons/obj/monitors.dmi', "overlay_green") update_icon() @@ -302,7 +302,7 @@ Just a object used in constructing fire alarms return master_area=A -/obj/machinery/partyalarm/attack_hand(mob/user as mob) +/obj/machinery/partyalarm/attack_hand(mob/user) if((user.stat && !isobserver(user)) || stat & (NOPOWER|BROKEN)) return diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index 428a9eeb8e9..cf9f97ee6bb 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -156,7 +156,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co update_icon() /obj/machinery/newscaster/attack_ghost(mob/user) - return attack_hand(user) + ui_interact(user) /obj/machinery/newscaster/attack_hand(mob/user) if(..()) diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index fad1ae8de2d..339d28ce80c 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -29,8 +29,8 @@ ..() move_update_air(T) -/obj/machinery/shield/CanPass(atom/movable/mover, turf/target, height, air_group) - if(!height || air_group) return 0 +/obj/machinery/shield/CanPass(atom/movable/mover, turf/target, height) + if(!height) return 0 else return ..() /obj/machinery/shield/CanAtmosPass(var/turf/T) @@ -600,8 +600,8 @@ return -/obj/machinery/shieldwall/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(air_group || (height==0)) return 1 +/obj/machinery/shieldwall/CanPass(atom/movable/mover, turf/target, height=0) + if(height==0) return 1 if(istype(mover) && mover.checkpass(PASSGLASS)) return prob(20) diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index 3da7bb372d4..fa6ea110c23 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -337,8 +337,8 @@ steam.start() -- spawns the effect return -/obj/effect/effect/bad_smoke/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(air_group || (height==0)) return 1 +/obj/effect/effect/bad_smoke/CanPass(atom/movable/mover, turf/target, height=0) + if(height==0) return 1 if(istype(mover, /obj/item/projectile/beam)) var/obj/item/projectile/beam/B = mover B.damage = (B.damage/2) @@ -1124,8 +1124,7 @@ steam.start() -- spawns the effect M.visible_message("[M] tears apart \the [src]!"); qdel(src) -/obj/structure/foamedmetal/CanPass(atom/movable/mover, turf/target, height=1.5, air_group = 0) - if(air_group) return 0 +/obj/structure/foamedmetal/CanPass(atom/movable/mover, turf/target, height=1.5) return !density /obj/structure/foamedmetal/CanAtmosPass() diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm index 80cbb208c76..848c681576c 100644 --- a/code/game/objects/effects/spiders.dm +++ b/code/game/objects/effects/spiders.dm @@ -59,8 +59,8 @@ if(prob(50)) icon_state = "stickyweb2" -/obj/effect/spider/stickyweb/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(air_group || (height==0)) return 1 +/obj/effect/spider/stickyweb/CanPass(atom/movable/mover, turf/target, height=0) + if(height==0) return 1 if(istype(mover, /mob/living/simple_animal/hostile/poison/giant_spider)) return 1 else if(istype(mover, /mob/living)) diff --git a/code/game/objects/items/policetape.dm b/code/game/objects/items/policetape.dm index 907be15d850..914ade24178 100644 --- a/code/game/objects/items/policetape.dm +++ b/code/game/objects/items/policetape.dm @@ -147,9 +147,9 @@ var/list/tape_roll_applications = list() tape_roll_applications[F] |= direction return -/obj/item/tape/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) +/obj/item/tape/CanPass(atom/movable/mover, turf/target, height=0) if(!density) return 1 - if(air_group || (height==0)) return 1 + if(height==0) return 1 if((mover.pass_flags & PASSTABLE || istype(mover, /obj/effect/meteor) || mover.throwing == 1) ) return 1 diff --git a/code/game/objects/structures/coathanger.dm b/code/game/objects/structures/coathanger.dm index 3c68792fece..0a30a914063 100644 --- a/code/game/objects/structures/coathanger.dm +++ b/code/game/objects/structures/coathanger.dm @@ -28,7 +28,7 @@ to_chat(user, "You cannot hang [W] on [src]") return ..() -/obj/structure/coatrack/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) +/obj/structure/coatrack/CanPass(atom/movable/mover, turf/target, height=0) var/can_hang = 0 for(var/T in allowed) if(istype(mover,T)) diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 4b3a5d6896c..db3a57dce0f 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -34,8 +34,8 @@ /obj/structure/closet/alter_health() return get_turf(src) -/obj/structure/closet/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(air_group || (height==0 || wall_mounted)) return 1 +/obj/structure/closet/CanPass(atom/movable/mover, turf/target, height=0) + if(height==0 || wall_mounted) return 1 return (!density) /obj/structure/closet/proc/can_open() @@ -262,7 +262,8 @@ return if(isrobot(user)) return - if(!usr.drop_item()) + if(!user.drop_item()) //couldn't drop the item + to_chat(user, "\The [W] is stuck to your hand, you cannot put it in \the [src]!") return if(W) W.forceMove(loc) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm index cf7c2eec052..04444a18a8f 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm @@ -78,7 +78,9 @@ to_chat(user, "The locker is too small to stuff [W:affecting] into!") if(isrobot(user)) return - user.drop_item() + if(!user.drop_item()) //couldn't drop the item + to_chat(user, "\The [W] is stuck to your hand, you cannot put it in \the [src]!") + return if(W) W.forceMove(loc) else if((istype(W, /obj/item/weapon/card/emag)||istype(W, /obj/item/weapon/melee/energy/blade)) && !broken) diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm index ec9fd4968b9..7bacab397e2 100644 --- a/code/game/objects/structures/door_assembly.dm +++ b/code/game/objects/structures/door_assembly.dm @@ -115,12 +115,6 @@ airlock_type = "/multi_tile/glass" glass = -1 //To prevent bugs in deconstruction process. -/obj/structure/door_assembly/door_assembly_cult - base_name = "cult airlock assembly" - icon = 'icons/obj/doors/Doorcult.dmi' - base_icon_state ="construction" - airlock_type = "/cult" - /obj/structure/door_assembly/multi_tile/New() if(dir in list(EAST, WEST)) bound_width = width * world.icon_size @@ -146,7 +140,6 @@ airlock_type = "/cult" glass = -1 - /obj/structure/door_assembly/door_assembly_cultruned icon = 'icons/obj/doors/Doorcultruned.dmi' base_icon_state = "construction" @@ -154,7 +147,6 @@ airlock_type = "/cult/runed" glass = -1 - /obj/structure/door_assembly/attackby(obj/item/W as obj, mob/user as mob, params) if(istype(W, /obj/item/weapon/pen)) var/t = copytext(stripped_input(user, "Enter the name for the door.", src.name, src.created_name),1,MAX_NAME_LEN) @@ -292,6 +284,7 @@ else path = text2path("/obj/machinery/door/airlock[airlock_type]") var/obj/machinery/door/airlock/door = new path(src.loc) + door.setDir(dir) door.assembly_type = type door.electronics = src.electronics if(src.electronics.one_access) diff --git a/code/game/objects/structures/fullwindow.dm b/code/game/objects/structures/fullwindow.dm index ac6e57a4135..48b2268d8cc 100644 --- a/code/game/objects/structures/fullwindow.dm +++ b/code/game/objects/structures/fullwindow.dm @@ -6,7 +6,7 @@ /obj/structure/window/full/CheckExit(atom/movable/O as mob|obj, target as turf) return 1 -/obj/structure/window/full/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) +/obj/structure/window/full/CanPass(atom/movable/mover, turf/target, height=0) if(istype(mover) && mover.checkpass(PASSGLASS)) return 1 return 0 diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 3d88b9ecc8f..5f0fbc175db 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -112,8 +112,8 @@ health -= M.force * 0.5 healthcheck() -/obj/structure/grille/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(air_group || (height==0)) return 1 +/obj/structure/grille/CanPass(atom/movable/mover, turf/target, height=0) + if(height==0) return 1 if(istype(mover) && mover.checkpass(PASSGRILLE)) return 1 else diff --git a/code/game/objects/structures/inflatable.dm b/code/game/objects/structures/inflatable.dm index aee81bdf7f8..fa8a5144e2a 100644 --- a/code/game/objects/structures/inflatable.dm +++ b/code/game/objects/structures/inflatable.dm @@ -33,7 +33,7 @@ air_update_turf(1) return ..() -/obj/structure/inflatable/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) +/obj/structure/inflatable/CanPass(atom/movable/mover, turf/target, height=0) return 0 /obj/structure/inflatable/CanAtmosPass(turf/T) @@ -178,9 +178,7 @@ /obj/structure/inflatable/door/attack_hand(mob/user as mob) return TryToSwitchState(user) -/obj/structure/inflatable/door/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(air_group) - return state +/obj/structure/inflatable/door/CanPass(atom/movable/mover, turf/target, height=0) if(istype(mover, /obj/effect/beam)) return !opacity return !density diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm index 7c32823ec17..43d08cccee9 100644 --- a/code/game/objects/structures/mineral_doors.dm +++ b/code/game/objects/structures/mineral_doors.dm @@ -1,8 +1,6 @@ -//NOT using the existing /obj/machinery/door type, since that has some complications on its own, mainly based on its -//machineryness - +//NOT using the existing /obj/machinery/door type, since that has some complications on its own, mainly based on its machineryness /obj/structure/mineral_door - name = "mineral door" + name = "metal door" density = 1 anchored = 1 opacity = 1 @@ -10,16 +8,21 @@ icon = 'icons/obj/doors/mineral_doors.dmi' icon_state = "metal" - var/mineralType = "metal" + var/initial_state var/state = 0 //closed, 1 == open var/isSwitchingStates = 0 + var/close_delay = -1 //-1 if does not auto close. + var/hardness = 1 - var/oreAmount = 7 + var/sheetType = /obj/item/stack/sheet/metal + var/sheetAmount = 7 + var/openSound = 'sound/effects/stonedoor_openclose.ogg' + var/closeSound = 'sound/effects/stonedoor_openclose.ogg' + var/damageSound = null /obj/structure/mineral_door/New(location) ..() - icon_state = mineralType - name = "[mineralType] door" + initial_state = icon_state /obj/structure/mineral_door/initialize() ..() @@ -39,32 +42,38 @@ ..() if(!state) return TryToSwitchState(user) - return -/obj/structure/mineral_door/attack_ai(mob/user as mob) //those aren't machinery, they're just big fucking slabs of a mineral +/obj/structure/mineral_door/attack_ai(mob/user) //those aren't machinery, they're just big fucking slabs of a mineral if(isAI(user)) //so the AI can't open it return - else if(isrobot(user)) //but cyborgs can - if(get_dist(user,src) <= 1) //not remotely though - return TryToSwitchState(user) + else if(isrobot(user) && Adjacent(user)) //but cyborgs can, but not remotely + return TryToSwitchState(user) -/obj/structure/mineral_door/attack_hand(mob/user as mob) +/obj/structure/mineral_door/attack_hand(mob/user) return TryToSwitchState(user) -/obj/structure/mineral_door/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(air_group) return 0 +/obj/structure/mineral_door/attack_animal(mob/user) + return TryToSwitchState(user) + +/obj/structure/mineral_door/attack_ghost(mob/user) + if(user.can_advanced_admin_interact()) + SwitchState() + +/obj/structure/mineral_door/CanPass(atom/movable/mover, turf/target, height = 0) if(istype(mover, /obj/effect/beam)) return !opacity return !density -/obj/structure/mineral_door/CanAtmosPass() +/obj/structure/mineral_door/CanAtmosPass(turf/T) return !density /obj/structure/mineral_door/proc/TryToSwitchState(atom/user) - if(isSwitchingStates) return - if(ismob(user)) - var/mob/M = user - if(world.time - user.last_bumped <= 60) return //NOTE do we really need that? + if(isSwitchingStates) + return + if(isliving(user)) + var/mob/living/M = user + if(world.time - user.last_bumped <= 60) + return //NOTE do we really need that? if(M.client) if(iscarbon(M)) var/mob/living/carbon/C = M @@ -83,211 +92,175 @@ /obj/structure/mineral_door/proc/Open() isSwitchingStates = 1 - playsound(loc, 'sound/effects/stonedoor_openclose.ogg', 100, 1) - flick("[mineralType]opening",src) + playsound(loc, openSound, 100, 1) + flick("[initial_state]opening",src) sleep(10) density = 0 opacity = 0 state = 1 + air_update_turf(1) update_icon() isSwitchingStates = 0 - air_update_turf(1) + + if(close_delay != -1) + spawn(close_delay) + Close() /obj/structure/mineral_door/proc/Close() + if(isSwitchingStates || state != 1) + return + var/turf/T = get_turf(src) + for(var/mob/living/L in T) + return isSwitchingStates = 1 - playsound(loc, 'sound/effects/stonedoor_openclose.ogg', 100, 1) - flick("[mineralType]closing",src) + playsound(loc, closeSound, 100, 1) + flick("[initial_state]closing",src) sleep(10) density = 1 opacity = 1 state = 0 + air_update_turf(1) update_icon() isSwitchingStates = 0 - air_update_turf(1) /obj/structure/mineral_door/update_icon() if(state) - icon_state = "[mineralType]open" + icon_state = "[initial_state]open" else - icon_state = mineralType + icon_state = initial_state -/obj/structure/mineral_door/attackby(obj/item/weapon/W as obj, mob/user as mob, params) - if(istype(W,/obj/item/weapon/pickaxe)) +/obj/structure/mineral_door/attackby(obj/item/weapon/W, mob/user, params) + if(istype(W, /obj/item/weapon/pickaxe)) var/obj/item/weapon/pickaxe/digTool = W - to_chat(user, "You start digging the [name].") - if(do_after(user,digTool.digspeed * hardness, target = src) && src) - to_chat(user, "You finished digging.") - Dismantle() - else if(istype(W,/obj/item/weapon)) //not sure, can't not just weapons get passed to this proc? - hardness -= W.force/100 - to_chat(user, "You hit the [name] with your [W.name]!") - CheckHardness() - else + to_chat(user, "You start digging \the [src].") + if(do_after(user, digTool.digspeed * hardness, target = src) && src) + to_chat(user, "You finished digging.") + deconstruct(TRUE) + else if(user.a_intent != I_HARM) attack_hand(user) - return + else + attacked_by(W, user) + +/obj/structure/mineral_door/proc/attacked_by(obj/item/I, mob/user) + if(I.damtype != STAMINA) + user.changeNext_move(CLICK_CD_MELEE) + user.do_attack_animation(src) + visible_message("[user] hits \the [src] with \the [I].") + if(damageSound) + playsound(loc, damageSound, 100, 1) + else + playsound(loc, I.hitsound, 100, 1) + hardness -= I.force / 100 + CheckHardness() /obj/structure/mineral_door/proc/CheckHardness() if(hardness <= 0) - Dismantle(1) + deconstruct(FALSE) -/obj/structure/mineral_door/proc/Dismantle(devastated = 0) - if(!devastated) - if(mineralType == "metal") - var/ore = /obj/item/stack/sheet/metal - for(var/i = 1, i <= oreAmount, i++) - new ore(get_turf(src)) +/obj/structure/mineral_door/proc/deconstruct(disassembled = TRUE) + var/turf/T = get_turf(src) + if(sheetType) + if(disassembled) + new sheetType(T, sheetAmount) else - var/ore = text2path("/obj/item/stack/sheet/mineral/[mineralType]") - for(var/i = 1, i <= oreAmount, i++) - new ore(get_turf(src)) - else - if(mineralType == "metal") - var/ore = /obj/item/stack/sheet/metal - for(var/i = 3, i <= oreAmount, i++) - new ore(get_turf(src)) - else - var/ore = text2path("/obj/item/stack/sheet/mineral/[mineralType]") - for(var/i = 3, i <= oreAmount, i++) - new ore(get_turf(src)) + new sheetType(T, max(sheetAmount - 2, 1)) qdel(src) /obj/structure/mineral_door/ex_act(severity = 1) switch(severity) if(1) - Dismantle(1) + deconstruct(FALSE) if(2) if(prob(20)) - Dismantle(1) + deconstruct(FALSE) else hardness-- CheckHardness() if(3) hardness -= 0.1 CheckHardness() - return /obj/structure/mineral_door/iron - mineralType = "metal" hardness = 3 /obj/structure/mineral_door/silver - mineralType = "silver" + name = "silver door" + icon_state = "silver" + sheetType = /obj/item/stack/sheet/mineral/silver hardness = 3 /obj/structure/mineral_door/gold - mineralType = "gold" + name = "gold door" + icon_state = "gold" + sheetType = /obj/item/stack/sheet/mineral/gold /obj/structure/mineral_door/uranium - mineralType = "uranium" + name = "uranium door" + icon_state = "uranium" + sheetType = /obj/item/stack/sheet/mineral/uranium hardness = 3 light_range = 2 /obj/structure/mineral_door/sandstone - mineralType = "sandstone" + name = "sandstone door" + icon_state = "sandstone" + sheetType = /obj/item/stack/sheet/mineral/sandstone hardness = 0.5 /obj/structure/mineral_door/transparent opacity = 0 - Close() - ..() - set_opacity(0) +/obj/structure/mineral_door/transparent/Close() + ..() + set_opacity(0) /obj/structure/mineral_door/transparent/plasma - mineralType = "plasma" + name = "plasma door" + icon_state = "plasma" + sheetType = /obj/item/stack/sheet/mineral/plasma - attackby(obj/item/weapon/W as obj, mob/user as mob) - if(is_hot(W)) - message_admins("Plasma mineral door ignited by [key_name_admin(user)] in ([x],[y],[z] - JMP)",0,1) - log_game("Plasma mineral door ignited by [key_name(user)] in ([x],[y],[z])") - TemperatureAct(100) - ..() +/obj/structure/mineral_door/transparent/plasma/attackby(obj/item/weapon/W, mob/user) + if(is_hot(W)) + message_admins("Plasma mineral door ignited by [key_name_admin(user)] in ([x], [y], [z] - JMP)", 0, 1) + log_game("Plasma mineral door ignited by [key_name(user)] in ([x], [y], [z])") + TemperatureAct(100) + else + return ..() - temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) - if(exposed_temperature > 300) - TemperatureAct(exposed_temperature) +/obj/structure/mineral_door/transparent/plasma/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume) + if(exposed_temperature > 300) + TemperatureAct(exposed_temperature) - proc/TemperatureAct(temperature) - atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 500) - hardness = 0 - CheckHardness() +/obj/structure/mineral_door/transparent/plasma/proc/TemperatureAct(temperature) + atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 500) + deconstruct(FALSE) /obj/structure/mineral_door/transparent/diamond - mineralType = "diamond" + name = "diamond door" + icon_state = "diamond" + sheetType = /obj/item/stack/sheet/mineral/diamond hardness = 10 /obj/structure/mineral_door/wood - mineralType = "wood" + name = "wood door" + icon_state = "wood" + openSound = 'sound/effects/doorcreaky.ogg' + closeSound = 'sound/effects/doorcreaky.ogg' + sheetType = /obj/item/stack/sheet/wood hardness = 1 burn_state = FLAMMABLE burntime = 30 - Open() - isSwitchingStates = 1 - playsound(loc, 'sound/effects/doorcreaky.ogg', 100, 1) - flick("[mineralType]opening",src) - sleep(10) - density = 0 - set_opacity(0) - state = 1 - update_icon() - isSwitchingStates = 0 - - Close() - isSwitchingStates = 1 - playsound(loc, 'sound/effects/doorcreaky.ogg', 100, 1) - flick("[mineralType]closing",src) - sleep(10) - density = 1 - set_opacity(1) - state = 0 - update_icon() - isSwitchingStates = 0 - - Dismantle(devastated = 0) - if(!devastated) - for(var/i = 1, i <= oreAmount, i++) - new/obj/item/stack/sheet/wood(get_turf(src)) - qdel(src) - /obj/structure/mineral_door/resin - mineralType = "resin" + name = "resin door" + icon_state = "resin" hardness = 1.5 - var/close_delay = 100 + close_delay = 100 + openSound = 'sound/effects/attackblob.ogg' + closeSound = 'sound/effects/attackblob.ogg' + damageSound = 'sound/effects/attackblob.ogg' + sheetType = null - TryToSwitchState(atom/user) - if(isalien(user)) - return ..() - - Open() - isSwitchingStates = 1 - playsound(loc, 'sound/effects/attackblob.ogg', 100, 1) - flick("[mineralType]opening",src) - sleep(10) - density = 0 - set_opacity(0) - state = 1 - update_icon() - isSwitchingStates = 0 - - spawn(close_delay) - if(!isSwitchingStates && state == 1) - Close() - - Close() - isSwitchingStates = 1 - playsound(loc, 'sound/effects/attackblob.ogg', 100, 1) - flick("[mineralType]closing",src) - sleep(10) - density = 1 - set_opacity(1) - state = 0 - update_icon() - isSwitchingStates = 0 - - Dismantle(devastated = 0) - qdel(src) - - CheckHardness() - playsound(loc, 'sound/effects/attackblob.ogg', 100, 1) - ..() +/obj/structure/mineral_door/resin/TryToSwitchState(atom/user) + if(isalien(user)) + return ..() diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 2d46b2bffb9..5c710d8da23 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -126,8 +126,8 @@ /obj/structure/table/attack_tk() // no telehulk sorry return -/obj/structure/table/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(air_group || (height==0)) return 1 +/obj/structure/table/CanPass(atom/movable/mover, turf/target, height=0) + if(height==0) return 1 if(istype(mover,/obj/item/projectile)) return (check_cover(mover,target)) if(ismob(mover)) @@ -557,8 +557,8 @@ qdel(src) return -/obj/structure/rack/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(air_group || (height==0)) return 1 +/obj/structure/rack/CanPass(atom/movable/mover, turf/target, height=0) + if(height==0) return 1 if(src.density == 0) //Because broken racks -Agouri |TODO: SPRITE!| return 1 if(istype(mover) && mover.checkpass(PASSTABLE)) diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm index 5aa14e66adf..ceba6687143 100644 --- a/code/game/objects/structures/windoor_assembly.dm +++ b/code/game/objects/structures/windoor_assembly.dm @@ -45,11 +45,10 @@ obj/structure/windoor_assembly/Destroy() /obj/structure/windoor_assembly/update_icon() icon_state = "[facing]_[secure ? "secure_" : ""]windoor_assembly[state]" -/obj/structure/windoor_assembly/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) +/obj/structure/windoor_assembly/CanPass(atom/movable/mover, turf/target, height=0) if(istype(mover) && mover.checkpass(PASSGLASS)) return 1 if(get_dir(loc, target) == dir) //Make sure looking at appropriate border - if(air_group) return 0 return !density else return 1 diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index ec457101b16..b393fd307e4 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -90,7 +90,7 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f return !density return 1 -/obj/structure/window/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) +/obj/structure/window/CanPass(atom/movable/mover, turf/target, height=0) if(istype(mover) && mover.checkpass(PASSGLASS)) return 1 if(dir == SOUTHWEST || dir == SOUTHEAST || dir == NORTHWEST || dir == NORTHEAST) diff --git a/code/game/shuttle_engines.dm b/code/game/shuttle_engines.dm index 820103eb2d4..3072fd2a264 100644 --- a/code/game/shuttle_engines.dm +++ b/code/game/shuttle_engines.dm @@ -16,8 +16,8 @@ opacity = 0 anchored = 1 - CanPass(atom/movable/mover, turf/target, height, air_group) - if(!height || air_group) return 0 + CanPass(atom/movable/mover, turf/target, height) + if(!height) return 0 else return ..() CanAtmosPass(turf/T) diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm index d81d6fdec54..7e5c0325403 100644 --- a/code/game/turfs/simulated/floor.dm +++ b/code/game/turfs/simulated/floor.dm @@ -47,7 +47,7 @@ var/list/icons_to_ignore_at_floor_init = list("damaged1","damaged2","damaged3"," return ..() -//turf/simulated/floor/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) +//turf/simulated/floor/CanPass(atom/movable/mover, turf/target, height=0) // if((istype(mover, /obj/machinery/vehicle) && !(src.burnt))) // if(!( locate(/obj/machinery/mass_driver, src) )) // return 0 diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index a029e529856..d8c38d5f666 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -2,6 +2,7 @@ var/list/admin_verbs_default = list( /client/proc/deadmin_self, /*destroys our own admin datum so we can play as a regular player*/ /client/proc/hide_verbs, /*hides all our adminverbs*/ + /client/proc/toggleadminhelpsound, /*toggles whether we hear bwoinks*/ /client/proc/cmd_mentor_check_new_players, /client/proc/cmd_mentor_check_player_exp /* shows players by playtime */ ) diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm index 5de3178e7ff..ea58ff4a149 100644 --- a/code/modules/admin/verbs/adminpm.dm +++ b/code/modules/admin/verbs/adminpm.dm @@ -162,8 +162,8 @@ C.ckey_last_pm = ckey*/ //play the recieving admin the adminhelp sound (if they have them enabled) - //non-admins shouldn't be able to disable this - if(C.prefs.sound & SOUND_ADMINHELP) + //non-admins always hear the sound, as they cannot toggle it + if((!C.holder) || (C.prefs.sound & SOUND_ADMINHELP)) C << 'sound/effects/adminhelp.ogg' log_admin("PM: [key_name(src)]->[key_name(C)]: [msg]") diff --git a/code/modules/client/preference/loadout/loadout_uniform.dm b/code/modules/client/preference/loadout/loadout_uniform.dm index d7df4da720b..b7b768561d9 100644 --- a/code/modules/client/preference/loadout/loadout_uniform.dm +++ b/code/modules/client/preference/loadout/loadout_uniform.dm @@ -36,7 +36,7 @@ /datum/gear/uniform/skirt/job/atmos display_name = "skirt, atmos" path = /obj/item/clothing/under/rank/atmospheric_technician/skirt - allowed_roles = list("Chief Engineer","Atmospheric Technician") + allowed_roles = list("Chief Engineer","Life Support Specialist") /datum/gear/uniform/skirt/job/eng display_name = "skirt, engineer" diff --git a/code/modules/client/preference/preferences_toggles.dm b/code/modules/client/preference/preferences_toggles.dm index 10f6c58982f..b922706fd61 100644 --- a/code/modules/client/preference/preferences_toggles.dm +++ b/code/modules/client/preference/preferences_toggles.dm @@ -36,8 +36,8 @@ to_chat(usr, "You will [(prefs.toggles & CHAT_RADIO) ? "now" : "no longer"] see radio chatter from radios or speakers") feedback_add_details("admin_verb","THR") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! -/client/verb/toggleadminhelpsound() - set name = "Hear/Silence Adminhelps" +/client/proc/toggleadminhelpsound() + set name = "Hear/Silence Admin Bwoinks" set category = "Preferences" set desc = "Toggle hearing a notification when admin PMs are recieved" if(!holder) return diff --git a/code/modules/clothing/spacesuits/alien.dm b/code/modules/clothing/spacesuits/alien.dm index 95fba0a1a48..ee07c3a7a67 100644 --- a/code/modules/clothing/spacesuits/alien.dm +++ b/code/modules/clothing/spacesuits/alien.dm @@ -235,26 +235,3 @@ ..(user) if(magpulse) to_chat(user, "It would be hard to take these off without relaxing your grip first.")//theoretically this message should only be seen by the wearer when the claws are equipped. - - -/obj/item/clothing/suit/space/eva/vox - name = "Vox EVA Suit" - icon_state = "voxspace" - item_state = "voxspace" - icon = 'icons/obj/clothing/species/vox/suits.dmi' - species_restricted = list("Vox", "Vox Armalis") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/suit.dmi', - "Vox Armalis" = 'icons/mob/species/armalis/suit.dmi', - ) - -/obj/item/clothing/head/helmet/space/eva/vox - name = "Vox EVA Suit" - icon_state = "voxspace" - item_state = "voxspace" - icon = 'icons/obj/clothing/species/vox/hats.dmi' - species_restricted = list("Vox","Vox Armalis") - sprite_sheets = list( - "Vox" = 'icons/mob/species/vox/head.dmi', - "Vox Armalis" = 'icons/mob/species/armalis/head.dmi', - ) diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm index e93f3334aac..db1511a9a77 100644 --- a/code/modules/clothing/spacesuits/miscellaneous.dm +++ b/code/modules/clothing/spacesuits/miscellaneous.dm @@ -147,7 +147,7 @@ desc = "A lightweight space suit with the basic ability to protect the wearer from the vacuum of space during emergencies." armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 20) species_restricted = list("exclude", "Diona", "Wryn") - species_fit = list("Vox","Vulpkanin") + species_fit = list("Vox", "Vulpkanin") sprite_sheets = list( "Vox" = 'icons/mob/species/vox/suit.dmi', "Vulpkanin" = 'icons/mob/species/vulpkanin/suit.dmi' @@ -165,7 +165,7 @@ armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 20) flash_protect = 0 species_restricted = list("exclude", "Diona", "Wryn") - species_fit = list("Vox","Vulpkanin") + species_fit = list("Vox", "Vulpkanin") sprite_sheets = list( "Vox" = 'icons/mob/species/vox/helmet.dmi', "Vulpkanin" = 'icons/mob/species/vulpkanin/helmet.dmi' diff --git a/code/modules/economy/ATM.dm b/code/modules/economy/ATM.dm index a1e00546ed4..e1852cf9cfd 100644 --- a/code/modules/economy/ATM.dm +++ b/code/modules/economy/ATM.dm @@ -118,6 +118,9 @@ log transactions to_chat(user, "Artificial unit recognized. Artificial units do not currently receive monetary compensation, as per Nanotrasen regulation #1005.") return ui_interact(user) + +/obj/machinery/atm/attack_ghost(mob/user) + ui_interact(user) /obj/machinery/atm/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) user.set_machine(src) diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index 27ae9684f5b..5709e70e5e7 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -996,8 +996,8 @@ C.faction = list("plants") ///Diona Nymph Related Procs/// -/obj/machinery/hydroponics/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) //So nymphs can climb over top of trays. - if(air_group || (height==0)) +/obj/machinery/hydroponics/CanPass(atom/movable/mover, turf/target, height=0) //So nymphs can climb over top of trays. + if(height==0) return 1 if(istype(mover) && mover.checkpass(PASSTABLE)) diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 1621cffbd16..5be43822c6f 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -99,7 +99,7 @@ var/list/image/ghost_darkness_images = list() //this is a list of images for thi updateallghostimages() return ..() -/mob/dead/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) +/mob/dead/CanPass(atom/movable/mover, turf/target, height=0) return 1 diff --git a/code/modules/mob/language.dm b/code/modules/mob/language.dm index 2b495f02062..61bd133efef 100644 --- a/code/modules/mob/language.dm +++ b/code/modules/mob/language.dm @@ -494,11 +494,10 @@ ask_verb = "sings" exclaim_verb = "sings" colour = "alien" - key = "x" + key = "bo" flags = RESTRICTED | HIVEMIND /datum/language/corticalborer/broadcast(mob/living/speaker, message, speaker_mask) - var/mob/living/simple_animal/borer/B if(iscarbon(speaker)) diff --git a/code/modules/mob/living/carbon/brain/brain_item.dm b/code/modules/mob/living/carbon/brain/brain_item.dm index 064605001dd..4c24562ecc1 100644 --- a/code/modules/mob/living/carbon/brain/brain_item.dm +++ b/code/modules/mob/living/carbon/brain/brain_item.dm @@ -73,7 +73,7 @@ var/mob/living/simple_animal/borer/borer = owner.has_brain_worms() if(borer) - borer.detatch() //Should remove borer if the brain is removed - RR + borer.detach() //Should remove borer if the brain is removed - RR if(owner.mind && !non_primary)//don't transfer if the owner does not have a mind. B.transfer_identity(user) diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 89c35870cad..2300f25768e 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -114,7 +114,7 @@ B = I if(B) if(B.controlling && B.host == src) - B.detatch() + B.detach() verbs -= /mob/living/carbon/proc/release_control diff --git a/code/modules/mob/living/silicon/ai/life.dm b/code/modules/mob/living/silicon/ai/life.dm index 94814045871..c710e4c12db 100644 --- a/code/modules/mob/living/silicon/ai/life.dm +++ b/code/modules/mob/living/silicon/ai/life.dm @@ -42,7 +42,6 @@ var/area/my_area = get_area(src) if(!lacks_power()) - if(aiRestorePowerRoutine == 2) to_chat(src, "Alert cancelled. Power has been restored without our assistance.") aiRestorePowerRoutine = 0 @@ -53,8 +52,6 @@ aiRestorePowerRoutine = 0 clear_fullscreen("blind") update_sight() - - else overlay_fullscreen("blind", /obj/screen/fullscreen/blind) @@ -74,6 +71,8 @@ if(!lacks_power()) to_chat(src, "Alert cancelled. Power has been restored without our assistance.") aiRestorePowerRoutine = 0 + clear_fullscreen("blind") + update_sight() return to_chat(src, "Fault confirmed: missing external power. Shutting down main control system to save power.") sleep(20) @@ -112,6 +111,7 @@ to_chat(src, "Alert cancelled. Power has been restored without our assistance.") aiRestorePowerRoutine = 0 clear_fullscreen("blind") + update_sight() return switch(PRP) diff --git a/code/modules/mob/living/silicon/robot/drone/drone_items.dm b/code/modules/mob/living/silicon/robot/drone/drone_items.dm index cea257d1234..9ae7acecff3 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_items.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_items.dm @@ -12,6 +12,7 @@ /obj/item/weapon/firealarm_electronics, /obj/item/weapon/airalarm_electronics, /obj/item/weapon/airlock_electronics, + /obj/item/weapon/firelock_electronics, /obj/item/weapon/intercom_electronics, /obj/item/weapon/apc_electronics, /obj/item/weapon/stock_parts, @@ -26,7 +27,8 @@ /obj/item/weapon/camera_assembly, /obj/item/weapon/tank, /obj/item/weapon/circuitboard, - /obj/item/stack/tile/light + /obj/item/stack/tile/light, + /obj/item/weapon/ore/bluespace_crystal ) //Item currently being held. diff --git a/code/modules/pda/PDA.dm b/code/modules/pda/PDA.dm index 6874593f33a..d8b959e6225 100755 --- a/code/modules/pda/PDA.dm +++ b/code/modules/pda/PDA.dm @@ -440,7 +440,8 @@ var/global/list/obj/item/device/pda/PDAs = list() scanmode.scan_atom(A, user) /obj/item/device/pda/proc/explode() //This needs tuning. - if(!src.detonate) return + if(!detonate) + return var/turf/T = get_turf(src.loc) if(ismob(loc)) diff --git a/code/modules/pda/messenger_plugins.dm b/code/modules/pda/messenger_plugins.dm index 8585a26c827..b1fa63dd2e0 100644 --- a/code/modules/pda/messenger_plugins.dm +++ b/code/modules/pda/messenger_plugins.dm @@ -22,7 +22,7 @@ /datum/data/pda/messenger_plugin/virus/clown/user_act(mob/user as mob, obj/item/device/pda/P) . = ..(user, P) if(.) - user.show_message("Virus sent!", 1) + user.show_message("Virus sent!", 1) P.honkamt = (rand(15,20)) P.ttone = "honk" @@ -33,7 +33,7 @@ /datum/data/pda/messenger_plugin/virus/mime/user_act(mob/user as mob, obj/item/device/pda/P) . = ..(user, P) if(.) - user.show_message("Virus sent!", 1) + user.show_message("Virus sent!", 1) var/datum/data/pda/app/M = P.find_program(/datum/data/pda/app/messenger) if(M) M.notify_silent = 1 @@ -57,16 +57,19 @@ else difficulty += 2 - if(prob(difficulty * 12) || (pda.hidden_uplink)) - user.show_message("An error flashes on your [pda].", 1) + if(!P.detonate || P.hidden_uplink) + user.show_message("The target PDA does not seem to respond to the detonation command.", 1) + pda.cartridge.charges++ + else if(prob(difficulty * 12)) + user.show_message("An error flashes on your [pda].", 1) else if(prob(difficulty * 3)) - user.show_message("Energy feeds back into your [pda]!", 1) + user.show_message("Energy feeds back into your [pda]!", 1) pda.close(user) pda.explode() log_admin("[key_name(user)] just attempted to blow up [P] with the Detomatix cartridge but failed, blowing themselves up") message_admins("[key_name_admin(user)] just attempted to blow up [P] with the Detomatix cartridge but failed, blowing themselves up", 1) else - user.show_message("Success!", 1) + user.show_message("Success!", 1) log_admin("[key_name(user)] just attempted to blow up [P] with the Detomatix cartridge and succeded") message_admins("[key_name_admin(user)] just attempted to blow up [P] with the Detomatix cartridge and succeded", 1) P.explode() \ No newline at end of file diff --git a/code/modules/recycling/disposal-construction.dm b/code/modules/recycling/disposal-construction.dm index fd915caa4a8..73fbb455835 100644 --- a/code/modules/recycling/disposal-construction.dm +++ b/code/modules/recycling/disposal-construction.dm @@ -175,26 +175,6 @@ to_chat(user, "You can only attach the [nicetype] if the floor plating is removed.") return - var/obj/structure/disposalpipe/CP = locate() in T - if(ptype>=6 && ptype <= 8) // Disposal or outlet - if(CP) // There's something there - if(!istype(CP,/obj/structure/disposalpipe/trunk)) - to_chat(user, "The [nicetype] requires a trunk underneath it in order to work.") - return - else // Nothing under, fuck. - to_chat(user, "The [nicetype] requires a trunk underneath it in order to work.") - return - else - if(CP) - update() - var/pdir = CP.dpdir - if(istype(CP, /obj/structure/disposalpipe/broken)) - pdir = CP.dir - if(pdir & dpdir) - to_chat(user, "There is already a [nicetype] at that location.") - return - - if(istype(I, /obj/item/weapon/wrench)) if(anchored) anchored = 0 @@ -214,8 +194,28 @@ to_chat(user, "You attach the [nicetype] to the underfloor.") playsound(src.loc, I.usesound, 100, 1) update() + return + + var/obj/structure/disposalpipe/CP = locate() in T + if(ptype>=6 && ptype <= 8) // Disposal or outlet + if(CP) // There's something there + if(!istype(CP,/obj/structure/disposalpipe/trunk)) + to_chat(user, "The [nicetype] requires a trunk underneath it in order to work.") + return + else // Nothing under, fuck. + to_chat(user, "The [nicetype] requires a trunk underneath it in order to work.") + return + else + if(CP) + update() + var/pdir = CP.dpdir + if(istype(CP, /obj/structure/disposalpipe/broken)) + pdir = CP.dir + if(pdir & dpdir) + to_chat(user, "There is already a [nicetype] at that location.") + return - else if(istype(I, /obj/item/weapon/weldingtool)) + if(istype(I, /obj/item/weapon/weldingtool)) if(anchored) var/obj/item/weapon/weldingtool/W = I if(W.remove_fuel(0,user)) diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 075a2113e79..9d49cb03291 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -210,7 +210,8 @@ // leave the disposal /obj/machinery/disposal/proc/go_out(mob/user) - user.forceMove(loc) + if(user) + user.forceMove(loc) update() // ai as human but can't flush @@ -457,7 +458,7 @@ H.vent_gas(loc) qdel(H) -/obj/machinery/disposal/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) +/obj/machinery/disposal/CanPass(atom/movable/mover, turf/target, height=0) if(istype(mover,/obj/item) && mover.throwing) var/obj/item/I = mover if(istype(I, /obj/item/projectile)) @@ -471,7 +472,7 @@ M.show_message("\the [I] bounces off of \the [src]'s rim!.", 3) return 0 else - return ..(mover, target, height, air_group) + return ..(mover, target, height) /obj/machinery/disposal/singularity_pull(S, current_size) @@ -1145,6 +1146,19 @@ update() return + +/obj/structure/disposalpipe/trunk/Destroy() + if(istype(linked, /obj/structure/disposaloutlet)) + var/obj/structure/disposaloutlet/O = linked + O.expel() + else if(istype(linked, /obj/machinery/disposal)) + var/obj/machinery/disposal/D = linked + if(D.trunk == src) + D.go_out() + D.trunk = null + + linked = null + return ..() /obj/structure/disposalpipe/trunk/proc/getlinked() linked = null @@ -1285,7 +1299,7 @@ if(H) for(var/atom/movable/AM in H) - AM.loc = src.loc + AM.forceMove(loc) AM.pipe_eject(dir) if(!istype(AM,/mob/living/silicon/robot/drone)) //Drones keep smashing windows from being fired out of chutes. Bad for the station. ~Z spawn(5) diff --git a/code/modules/station_goals/bsa.dm b/code/modules/station_goals/bsa.dm index a2f3a047dae..38d04b527db 100644 --- a/code/modules/station_goals/bsa.dm +++ b/code/modules/station_goals/bsa.dm @@ -7,7 +7,7 @@ /datum/station_goal/bluespace_cannon/get_report() return {"Bluespace Artillery position construction
- Our military presence is inadequate in your sector. We need you to construct BSA-[rand(1,99)] Artillery position aboard your station. + Our military presence is inadequate in your sector. We need you to construct a BSA-[rand(1,99)] Artillery position aboard your station.

Its base parts should be available for shipping by your cargo shuttle.
diff --git a/code/modules/station_goals/dna_vault.dm b/code/modules/station_goals/dna_vault.dm index 03f119d62c4..d77455cd8e7 100644 --- a/code/modules/station_goals/dna_vault.dm +++ b/code/modules/station_goals/dna_vault.dm @@ -177,6 +177,8 @@ var/list/non_simple_animals = typecacheof(list(/mob/living/carbon/human/monkey,/ plants_max = G.plant_count dna_max = G.human_count break + + ..() /obj/machinery/dna_vault/Destroy() for(var/V in fillers) diff --git a/code/modules/station_goals/shield.dm b/code/modules/station_goals/shield.dm index 8a7484626be..5a19fcb67cc 100644 --- a/code/modules/station_goals/shield.dm +++ b/code/modules/station_goals/shield.dm @@ -9,7 +9,7 @@ return {"Station Shield construction
The station is located in a zone full of space debris. We have a prototype shielding system you will deploy to reduce collision related accidents.

- You can order the satellites and control systems through cargo shuttle."} + You can order the satellites and control systems through the cargo shuttle."} /datum/station_goal/station_shield/on_report() //Unlock diff --git a/code/modules/surgery/implant.dm b/code/modules/surgery/implant.dm index 35a30674e3e..da6a4676ade 100644 --- a/code/modules/surgery/implant.dm +++ b/code/modules/surgery/implant.dm @@ -386,7 +386,7 @@ var/mob/living/simple_animal/borer/worm = H.has_brain_worms() if(worm.controlling) target.release_control() - worm.detatch() + worm.detach() worm.leave_host() user.visible_message("a slug like creature wiggles out of [H]'s [target_zone]!") diff --git a/code/modules/vehicle/vehicle.dm b/code/modules/vehicle/vehicle.dm index edfa68f2dbd..2a1ea4c7d64 100644 --- a/code/modules/vehicle/vehicle.dm +++ b/code/modules/vehicle/vehicle.dm @@ -16,6 +16,7 @@ //Pixels var/generic_pixel_x = 0 //All dirs show this pixel_x for the driver var/generic_pixel_y = 0 //All dirs shwo this pixel_y for the driver + var/spaceworthy = FALSE /obj/vehicle/New() @@ -130,6 +131,8 @@ /obj/vehicle/Bump(atom/movable/M) + if(!spaceworthy && isspaceturf(get_turf(src))) + return 0 . = ..() if(auto_door_open) if(istype(M, /obj/machinery/door) && buckled_mob) @@ -153,6 +156,7 @@ /obj/vehicle/space pressure_resistance = INFINITY + spaceworthy = TRUE /obj/vehicle/space/Process_Spacemove(direction) return 1 \ No newline at end of file diff --git a/html/changelog.html b/html/changelog.html index f1e66aa897d..efa9a6521cb 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -60,6 +60,30 @@ +

Markolie updated:

+

09 March 2017

Crazylemon64 updated:

diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index 936c06e7d2a..ad60b0b11e7 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -4033,3 +4033,30 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. 2017-03-10: Jovaniph: - tweak: Recitence no longer makes a sound when turning + Markolie: + - bugfix: The DNA Vault station goal will now be marked as completed properly. + - bugfix: Multi-tile airlocks will now change their direction properly. + - bugfix: The atmos skirt loadout item will now be equipped properly on round start. + - bugfix: Fixes the inhand disabler sprite pointing the wrong way in some directions. + - bugfix: The Janicart will no longer act as a jetpack. + - bugfix: You can now resist out of a borer's control again. + - bugfix: Fixes the general antag ban not working on certain conversion antagonists. + - bugfix: Fixes removing the trunk from underneath a chute/bin causing all sorts + of issues. + - bugfix: Fixes alt titles not showing up on ID's. + - bugfix: Mineral doors no longer block atmos (like they're supposed to). + - bugfix: Fixes the cortical borer hivemind talk not working. + - bugfix: Fixes detomatix cartridges not working *from* PDA's with an uplink (it + now no longer *on* a PDA with an uplink to prevent blowing up fellow traitors). + - bugfix: Fixes NODROP interaction with secure closets. + - bugfix: Fixes some stray fruit at the Syndicate base on Z2. + - bugfix: Fixes an incorrect camera network in the courtroom. + - bugfix: Fixes an issue where AI's would go blind upon travelling into space. + - tweak: The cortical borer hivemind talk key is now "bo". + - tweak: Attempting to blow up an undetonatable PDA (such as the captain's) will + now show a warning message. It will also no longer use up a charge. + - tweak: Animals can now open mineral doors and mineral doors will no longer be + closable if there's a mob inside. + - tweak: Matter grippers can now carry firelock electronics as well as bluespace + crystals (for construction). + - rscdel: Removes the pipe fitting on the table from atmospherics as it was broken. diff --git a/icons/mob/inhands/guns_righthand.dmi b/icons/mob/inhands/guns_righthand.dmi index 359045c25e0..d0c1b7bacda 100644 Binary files a/icons/mob/inhands/guns_righthand.dmi and b/icons/mob/inhands/guns_righthand.dmi differ diff --git a/icons/mob/species/vox/head.dmi b/icons/mob/species/vox/head.dmi index d263c1f85b6..b6a7a97f225 100644 Binary files a/icons/mob/species/vox/head.dmi and b/icons/mob/species/vox/head.dmi differ diff --git a/icons/mob/species/vox/helmet.dmi b/icons/mob/species/vox/helmet.dmi index 4f76b05427b..c9227ce2119 100644 Binary files a/icons/mob/species/vox/helmet.dmi and b/icons/mob/species/vox/helmet.dmi differ diff --git a/icons/mob/species/vox/suit.dmi b/icons/mob/species/vox/suit.dmi index cbf9508096d..4584f489ca6 100644 Binary files a/icons/mob/species/vox/suit.dmi and b/icons/mob/species/vox/suit.dmi differ diff --git a/icons/obj/clothing/species/vox/hats.dmi b/icons/obj/clothing/species/vox/hats.dmi index d8b26b1239f..922ede57f1a 100644 Binary files a/icons/obj/clothing/species/vox/hats.dmi and b/icons/obj/clothing/species/vox/hats.dmi differ diff --git a/icons/obj/clothing/species/vox/suits.dmi b/icons/obj/clothing/species/vox/suits.dmi index b90b92ae3b2..4dc0ade4fb8 100644 Binary files a/icons/obj/clothing/species/vox/suits.dmi and b/icons/obj/clothing/species/vox/suits.dmi differ