diff --git a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm
index 3034960c2fe..5f973a5bbd1 100644
--- a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm
@@ -6670,6 +6670,7 @@
"cyn" = (/obj/machinery/atmospherics/unary/outlet_injector/on{dir = 8},/turf/simulated/floor/plating/airless,/area/space)
"cyo" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor/shutters{density = 0; dir = 2; icon_state = "shutter0"; id_tag = "surgeryobs2"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/surgery1)
"cyp" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/medical{name = "Operating Theatre"; req_access_txt = "45"},/obj/machinery/holosign/surgery{id = "surgery2"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/surgery1)
+"cyq" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/closet/wardrobe/coroner,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
"cyr" = (/obj/machinery/door/firedoor,/obj/machinery/status_display{dir = 4; layer = 4; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whiteblue"},/area/medical/medbay3)
"cys" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "cmoprivacy"; layer = 2.7; name = "privacy shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/cmo)
"cyt" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/medbay3)
@@ -6684,6 +6685,7 @@
"cyC" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/chemistry)
"cyD" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{req_access_txt = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception)
"cyE" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
+"cyF" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/table,/obj/item/weapon/autopsy_scanner,/obj/item/weapon/scalpel,/obj/machinery/light/small,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/glass/bottle/reagent/formaldehyde,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
"cyG" = (/obj/effect/spawner/window/reinforced,/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/medical/chemistry)
"cyH" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception)
"cyI" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/reception)
@@ -7606,7 +7608,6 @@
"cQt" = (/obj/structure/table/glass,/obj/item/weapon/storage/box/donkpockets{pixel_x = 3; pixel_y = 3},/obj/machinery/light_switch{pixel_x = 0; pixel_y = 26},/obj/machinery/camera{c_tag = "Virology - Break Room"; dir = 2; network = list("SS13","Medbay")},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitegreen"},/area/medical/virology)
"cQu" = (/obj/item/device/radio/intercom{frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/structure/table/glass,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/turf/simulated/floor/plasteel{dir = 5; icon_state = "whitegreen"},/area/medical/virology)
"cQv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/aft{name = "Aft Maintenance"})
-"cQw" = (/obj/machinery/light/small{dir = 8},/obj/structure/closet/wardrobe/black,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/glass/bottle/reagent/formaldehyde,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
"cQx" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"cQy" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"cQz" = (/obj/structure/table,/obj/machinery/computer/med_data/laptop,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
@@ -8009,7 +8010,6 @@
"cYt" = (/obj/machinery/hologram/holopad,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"})
"cYu" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"})
"cYv" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/toxins/xenobiology{name = "\improper Secure Lab"})
-"cYw" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/table,/obj/item/weapon/autopsy_scanner,/obj/item/weapon/scalpel,/obj/machinery/light/small,/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
"cYy" = (/obj/machinery/light/small,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/medical/morgue)
"cYA" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/solar{id = "aftstarboard"; name = "Aft-Starboard Solar Array"},/turf/simulated/floor/plating/airless{icon_state = "solarpanel"},/area/solar/starboard)
"cYB" = (/turf/simulated/floor/plating/airless/catwalk,/area/solar/starboard)
@@ -8631,10 +8631,10 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqcCfcCfcCfcCfcCfaaaclIabqcCfcCfcCfcCfcCfaaaarBaaaabqaaaaaaaaabZUcPGcNacNbbZUcGZcEYcKzcKycKDcKAcGocKHcEYcKWcKXcFdcFdcFdcKecFdcFdcFdcKYcDecwqcKZcLbcLacLdcLccLecBvcBvcLfcDgcBvczCczCczCczCczCczCcLgcGqcGrcGscGtcGucGvcGwczMcGxcGycGzcGAcGBcGCcGDcdlcGFcGGcGHcGIcGIcGJcGKcGLcGMcGNcdncGPcGQcGRcGScGTcGUcGVcGVcGVcGWcBNabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcALcFNcGYcFNcALabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaupaaaabqaaaabqaaaabqaaacmRaaaabqaaaabqabqabqabqaupaaaaaaaaaaaaabqbZUcNOcNPcNQbZUcEQcEYcLhcGocLicGocGocLjcEYcxpcLvcLkcLKcLwcLWcLwcLwcLwcLYcLXcxycKZcMacLZcLdcMbcMccImcMecMdcMrcMfcIocMwcIncMLcImcMScMTczGczHcHncHocHocHpcHqczMcHrcHscHtcDpcHvcHwcHxcdMcHzcHAcHBcHCceEcHEcHFcHGcHHcHIcHJceQcHLcHMcHNcHOcHPcHQcHRcHScHTcBNabqabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcHUcALcHVcHWcHXcALcHUabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaaacAfcAfcAfcAfcAfabqcHYabqcAfcAfcAfcAfcAfabqarBaaaaaaaaaaaaaaabZUcOJcOKcfbbZUcMUcEYcMWcMVcNccMXcNscNicEYcNIcNKcNJcNMcNLcNNcNKcNKcNScOqcNUcwqcKZcOIcOHcLdcOLcOUcImcPkcOYcPlcIncIocPucPwcPvcImcIscnscgxcItcBJcIucFOcIwcIucIxcIxcIxcIxcIxcIycxPcIzcEycIAcIAcIBcICcIDcIEcIFcIGcIHcIIcIJcEKcIKcILcIMcEycINcBNcBNcFHcBNcFHarAabqaaaaaaabqaaaaaaabqabqabqaaaaaaaaaaaaaaaabqaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqabqcALcALcIOcIPcIPcIPcIQcALcALabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqcBdcBecBecBecBecBfckrcBgcBhcBhcBhcBhcBiabqarBaaaaaaaaaaaaaaabZUbZUcfccPEcPFcPxcEYcEYcEYcEYcEYcEYcEYcEYcPycPycPycPzcPycPycPycPycPycPBcPAcPDcKZcKZcQbcLdcQfcLdcImcQwcMdcQzcIncIocQAcQCcQBcImcJgcnscgxcvmcwEcQKcJicJjcJkcJlcJmcJncJocJpcJqcCOczQdgSdgSdgSdgSdgSdgScJrcJscJtcJucJvcJwcEKbZUcFGbZUcFHcJxcJycJzcJAcJBarAarAabqabqabqabqabqabqabqaaaabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqcJCcJDcJCcIPcJEcIPcXxcJGcFNabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqcBdcBecBecBecBecBfckrcBgcBhcBhcBhcBhcBiabqarBaaaaaaaaaaaaaaabZUbZUcfccPEcPFcPxcEYcEYcEYcEYcEYcEYcEYcEYcPycPycPycPzcPycPycPycPycPycPBcPAcPDcKZcKZcQbcLdcQfcLdcImcyqcMdcQzcIncIocQAcQCcQBcImcJgcnscgxcvmcwEcQKcJicJjcJkcJlcJmcJncJocJpcJqcCOczQdgSdgSdgSdgSdgSdgScJrcJscJtcJucJvcJwcEKbZUcFGbZUcFHcJxcJycJzcJAcJBarAarAabqabqabqabqabqabqabqaaaabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqabqcJCcJDcJCcIPcJEcIPcXxcJGcFNabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabqcCfcCfcCfcCfcCfaaaclIaaacCfcCfcCfcCfcCfaaaaupaaaaaaaaaaaaaaaaaabZUbZUbZUbZUcJRcogcogcogcogcNTcogcogcQVcogcogcogcRkcNTcNTcRlcRocPycRpcNUcRLcREcwjcRMcwjcRMcSvcImcSBcMdcSCcIocSPcSMcTncTecImcMScEXcgxcvmcKpcTwcKrcKscKtcKtcKtcKucKvcJpcgCcCOcKwdgScKxcfHcfscgLdgTcYScKBbRzcKEcKFcEKcrUcKGccscfYcFHcFHcFHcFHcFHcHfcKIarAabqaaaaaaaaaaaaaaaabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaabqabqcALcALcKJcIPcIPcIPcKKcALcALabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBaaaaaaabqabqabqaaaaaacKLabqaaaaaaabqabqaaaaaaarBabqaaaaaaaaaaaaaaaaaaaaaaaabZUbZUbZUbZUbZUbZUbZUbZUbZUbZUbZUcoDcuVcTFchycoDcTZcjicUacUocUecUqcUpcUpcUrcUpcUFcUVcUUcVbcUWcVmcVlcVucVtcVEcVvcWkcVKcWGcWlcWHcIxcIxcLlcLmcLncLocLpcLqcLrcJpcLscLtcLucBNcKxcfHchuchuchEcLxcLycLzcJucLAcEKcdNcLBceNchycLCbZUabqabqabqabqabqabqabqaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcHUcALcLDcLEcLFcALcHUabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaupaaaaaaaaaaaaaaaaaaaaacKLaaaaaaaaaaaaabqaaaaaaaupaaacHZcHZcHZcFvcHZcHZcHZaaaabqaaaaaaaaaabqaaaabqabqabqaaabZUcWIchychychychycWTchycDUcWUcwncXrcXlcXlcXwcXAcXycXYcImcYocYncYwcIncYIcYycYNcYLcImcMgcMhcgxcmmcIxcMicMjcMkcLocLocMlcMmcMncJpcMocMpcMqdgScKxcfHchuckedgTcYTcKBcMtcMucMvcEKcjnchyceNchycMxbZUabqaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcALcFNcMycFNcALabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaupaaaaaaaaaaaaaaaaaaaaacKLaaaaaaaaaaaaabqaaaaaaaupaaacHZcHZcHZcFvcHZcHZcHZaaaabqaaaaaaaaaabqaaaabqabqabqaaabZUcWIchychychychycWTchycDUcWUcwncXrcXlcXlcXwcXAcXycXYcImcYocYncyFcIncYIcYycYNcYLcImcMgcMhcgxcmmcIxcMicMjcMkcLocLocMlcMmcMncJpcMocMpcMqdgScKxcfHchuckedgTcYTcKBcMtcMucMvcEKcjnchyceNchycMxbZUabqaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcALcFNcMycFNcALabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarBabearBarBarBaaaaaaaaacKLaaaaaaaaaarBarBarBauparBabqcHZcIRcIScIRcITcIRcHZcHZcFvcHZcFvcHZcHZaaaaaaabqaaaaaacHZcHZcHZcHZcHZbZUcKVbZUcDUcYOcDecRLcRUcRUcRUcRUcRUcRUcRUcImcImcImcImcYWcImcImcImcImbZUcNdcgxcmmcIxcNecMjcLocLpcLocNfcNgcNhckzcNjcNkcNldgVdgUdgUdgUdgUdgUcNocNncNpcNqcNrcEKchychyceNchybZUbZUbZUabqabqaaaaaaabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqcFNcALcFNabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaabqaaaaaaaaaarBabqcNtabqarBaaaaaaabqaaaaaaabqaaacHZcJHcJIcJJcJKcJHcGXcJMcJNcJOcJPcJQcHZaaacZmcIacIacIacLRcLTcLUcLVcHZcZvcZqcZwcDUcZIcZycZQcZOcZXdeidafdaddakcRUcNRcmVcmVcmWdancjecmYcmYcmZcNVcNWcNXcBIcIxcNYcNZcOacOacOacObcOccOdcOecOfcOgcOhcOicOjcOkcOlcJLcOncOocOpclncOrcOscOtcmYcmYcOucOvcOwcOxbZUbZUbZUcksaaaabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqabqabqabqabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaarBaaaabqaaaarBaaaaaaabqabqabqabqabqcHZcKMcHjcKOcHucKMcKMcKQcKRcKScKTcKUcHZaaadaodaucMMcMNcMOcMPcMBcMQcMRdaydaxdaMdaLdaOdaNdaPcYCdaUdaQdbbdaVdbfcRUcOMbZUbZUbZUbZUbZUbZUbZUbZUczIcONcOOcOPcOQcORcOScOTdblcOVcOWcLpcOXclCcOZcPacPbcPccPdcPecPfcPgcPhcPicOpclNcPjbZUbZUbZUbZUbZUdenclGcPmclJcPnclJcPoabqabqaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm
index 918694a42c5..f9804d7fb12 100644
--- a/_maps/map_files/cyberiad/cyberiad.dmm
+++ b/_maps/map_files/cyberiad/cyberiad.dmm
@@ -2376,13 +2376,13 @@
"aTJ" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plasteel{icon_state = "bluecorner"},/area/hallway/primary/fore)
"aTK" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/table,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/medical/exam_room)
"aTL" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/medical/exam_room)
-"aTM" = (/obj/structure/closet/wardrobe/black,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/item/weapon/reagent_containers/glass/bottle/reagent/formaldehyde,/obj/item/weapon/reagent_containers/dropper,/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 8},/area/medical/morgue)
+"aTM" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/closet/wardrobe/coroner,/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 8},/area/medical/morgue)
"aTN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall,/area/medical/exam_room)
"aTO" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel,/area/medical/morgue)
"aTP" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/table,/obj/item/weapon/cane{pixel_x = -3; pixel_y = 3},/obj/item/weapon/cane{pixel_x = -5; pixel_y = 6},/obj/item/weapon/cane,/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/medical/exam_room)
"aTQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor/plasteel{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/medical/exam_room)
"aTR" = (/obj/structure/table,/obj/item/weapon/storage/box/gloves{pixel_y = 8},/obj/item/device/camera{name = "Autopsy Camera"; pixel_x = -2; pixel_y = -2},/turf/simulated/floor/plasteel{icon_state = "blue"; dir = 10},/area/medical/morgue)
-"aTS" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/table,/obj/item/weapon/autopsy_scanner,/obj/item/weapon/scalpel,/turf/simulated/floor/plasteel{dir = 0; icon_state = "blue"},/area/medical/morgue)
+"aTS" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/table,/obj/item/weapon/autopsy_scanner,/obj/item/weapon/scalpel,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/reagent_containers/glass/bottle/reagent/formaldehyde,/turf/simulated/floor/plasteel{dir = 0; icon_state = "blue"},/area/medical/morgue)
"aTT" = (/obj/machinery/light/small,/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/machinery/optable,/turf/simulated/floor/plasteel{dir = 0; icon_state = "blue"},/area/medical/morgue)
"aTU" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/plasteel{dir = 0; icon_state = "blue"},/area/medical/morgue)
"aTV" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/light/small,/turf/simulated/floor/plasteel{dir = 0; icon_state = "blue"},/area/medical/morgue)
@@ -4479,7 +4479,7 @@
"bIg" = (/obj/machinery/door_control{dir = 2; id = "mechbay"; name = "Mech Bay Door Control"; pixel_x = 6; pixel_y = 24; req_access_txt = "29"},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (WEST)"; icon_state = "warningcorner"; dir = 8},/area/assembly/chargebay)
"bIh" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/assembly/chargebay)
"bIi" = (/turf/simulated/wall,/area/medical/research{name = "Research Division"})
-"bIj" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24; shock_proof = 0},/turf/simulated/floor/plasteel{icon_state = "white"},/area/assembly/robotics)
+"bIj" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24; shock_proof = 0},/obj/machinery/light_switch{pixel_x = -23; pixel_y = -10},/turf/simulated/floor/plasteel{icon_state = "white"},/area/assembly/robotics)
"bIk" = (/obj/structure/sign/securearea,/turf/simulated/wall,/area/medical/research{name = "Research Division"})
"bIl" = (/obj/structure/stool/bed/chair/office/light{dir = 1},/obj/effect/landmark/start{name = "Roboticist"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitered"},/area/assembly/robotics)
"bIm" = (/obj/machinery/camera{c_tag = "Research Robotics Lab"; dir = 2; network = list("Research","SS13")},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whiteredcorner"},/area/assembly/robotics)
diff --git a/code/__HELPERS/time.dm b/code/__HELPERS/time.dm
index 872f299479c..4b71a2c7162 100644
--- a/code/__HELPERS/time.dm
+++ b/code/__HELPERS/time.dm
@@ -29,7 +29,7 @@
/proc/time_stamp()
return time2text(world.timeofday, "hh:mm:ss")
-
+
/proc/gameTimestamp(format = "hh:mm:ss") // Get the game time in text
return time2text(world.time - timezoneOffset + 432000, format)
@@ -61,6 +61,12 @@ proc/isDay(var/month, var/day)
*/
/proc/stop_watch(wh)
return round(0.1 * (TimeOfGame - wh), 0.1)
-
+
/proc/month2number(month)
- return month_names.Find(month)
\ No newline at end of file
+ return month_names.Find(month)
+
+//Take a value in seconds and returns a string of minutes and seconds in the format X minute(s) and X seconds.
+/proc/seconds_to_time(var/seconds as num)
+ var/numSeconds = seconds % 60
+ var/numMinutes = (seconds - numSeconds) / 60
+ return "[numMinutes] [numMinutes > 1 ? "minutes" : "minute"] and [numSeconds] seconds."
\ No newline at end of file
diff --git a/code/_globalvars/game_modes.dm b/code/_globalvars/game_modes.dm
index 6ae2fc069cc..3f8ec321470 100644
--- a/code/_globalvars/game_modes.dm
+++ b/code/_globalvars/game_modes.dm
@@ -5,4 +5,6 @@ var/wavesecret = 0 // meteor mode, delays wave progression, terrible name
var/datum/station_state/start_state = null // Used in round-end report
var/custom_event_msg = null
-var/list/summon_spots = list()
\ No newline at end of file
+var/custom_event_admin_msg = null
+
+var/list/summon_spots = list()
diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm
index 38b0eec4802..705c808875e 100644
--- a/code/datums/datumvars.dm
+++ b/code/datums/datumvars.dm
@@ -489,7 +489,7 @@
var/list/L = value
var/list/items = list()
- if(L.len > 0 && !(name == "underlays" || name == "overlays" || name == "vars" || L.len > (IS_NORMAL_LIST(L) ? 50 : 150)))
+ if(L.len > 0 && !(name == "underlays" || name == "overlays" || name == "vars" || L.len > (IS_NORMAL_LIST(L) ? 50 : 300)))
for(var/i in 1 to L.len)
var/key = L[i]
var/val
diff --git a/code/game/gamemodes/changeling/powers/biodegrade.dm b/code/game/gamemodes/changeling/powers/biodegrade.dm
new file mode 100644
index 00000000000..5e4b0e7fa12
--- /dev/null
+++ b/code/game/gamemodes/changeling/powers/biodegrade.dm
@@ -0,0 +1,82 @@
+/obj/effect/proc_holder/changeling/biodegrade
+ name = "Biodegrade"
+ desc = "Dissolves restraints or other objects preventing free movement."
+ helptext = "This is obvious to nearby people, and can destroy standard restraints and closets."
+ chemical_cost = 30 //High cost to prevent spam
+ dna_cost = 2
+ req_human = 1
+
+/obj/effect/proc_holder/changeling/biodegrade/sting_action(mob/living/carbon/human/user)
+ var/used = FALSE // only one form of shackles removed per use
+ if(!user.restrained() && !istype(user.loc, /obj/structure/closet) && !istype(user.loc, /obj/structure/spider/cocoon))
+ to_chat(user, "We are already free!")
+ return FALSE
+
+ if(user.handcuffed)
+ var/obj/O = user.get_item_by_slot(slot_handcuffed)
+ if(!istype(O))
+ return FALSE
+ user.visible_message("[user] vomits a glob of acid on \his [O]!", \
+ "We vomit acidic ooze onto our restraints!")
+ addtimer(src, "dissolve_handcuffs", 30, FALSE, user, O)
+ used = TRUE
+
+ if(user.wear_suit && user.wear_suit.breakouttime && !used)
+ var/obj/item/clothing/suit/S = user.get_item_by_slot(slot_wear_suit)
+ if(!istype(S))
+ return FALSE
+ user.visible_message("[user] vomits a glob of acid across the front of \his [S]!", \
+ "We vomit acidic ooze onto our straight jacket!")
+ addtimer(src, "dissolve_straightjacket", 30, FALSE, user, S)
+ used = TRUE
+
+
+ if(istype(user.loc, /obj/structure/closet) && !used)
+ var/obj/structure/closet/C = user.loc
+ if(!istype(C))
+ return FALSE
+ C.visible_message("[C]'s hinges suddenly begin to melt and run!")
+ to_chat(user, "We vomit acidic goop onto the interior of [C]!")
+ addtimer(src, "open_closet", 70, FALSE, user, C)
+ used = TRUE
+
+ if(istype(user.loc, /obj/structure/spider/cocoon) && !used)
+ var/obj/structure/spider/cocoon/C = user.loc
+ if(!istype(C))
+ return FALSE
+ C.visible_message("[src] shifts and starts to fall apart!")
+ to_chat(user, "We secrete acidic enzymes from our skin and begin melting our cocoon...")
+ addtimer(src, "dissolve_cocoon", 25, FALSE, user, C) //Very short because it's just webs
+ used = TRUE
+
+ if(used)
+ feedback_add_details("changeling_powers","BD")
+ return TRUE
+
+/obj/effect/proc_holder/changeling/biodegrade/proc/dissolve_handcuffs(mob/living/carbon/human/user, obj/O)
+ if(O && user.handcuffed == O)
+ user.unEquip(O)
+ O.visible_message("[O] dissolves into a puddle of sizzling goop.")
+ O.forceMove(get_turf(user))
+ qdel(O)
+
+/obj/effect/proc_holder/changeling/biodegrade/proc/dissolve_straightjacket(mob/living/carbon/human/user, obj/S)
+ if(S && user.wear_suit == S)
+ user.unEquip(S)
+ S.visible_message("[S] dissolves into a puddle of sizzling goop.")
+ S.forceMove(get_turf(user))
+ qdel(S)
+
+/obj/effect/proc_holder/changeling/biodegrade/proc/open_closet(mob/living/carbon/human/user, obj/structure/closet/C)
+ if(C && user.loc == C)
+ C.visible_message("[C]'s door breaks and opens!")
+ C.welded = FALSE
+ C.locked = FALSE
+ C.broken = TRUE
+ C.open()
+ to_chat(user, "We open the container restraining us!")
+
+/obj/effect/proc_holder/changeling/biodegrade/proc/dissolve_cocoon(mob/living/carbon/human/user, obj/structure/spider/cocoon/C)
+ if(C && user.loc == C)
+ qdel(C) //The cocoon's destroy will move the changeling outside of it without interference
+ to_chat(user, "We dissolve the cocoon!")
diff --git a/code/game/gamemodes/cult/cult_items.dm b/code/game/gamemodes/cult/cult_items.dm
index 39099fb7d44..876748838ae 100644
--- a/code/game/gamemodes/cult/cult_items.dm
+++ b/code/game/gamemodes/cult/cult_items.dm
@@ -192,13 +192,15 @@
/obj/item/weapon/whetstone/cult
name = "eldritch whetstone"
desc = "A block, empowered by dark magic. Sharp weapons will be enhanced when used on the stone."
- icon = 'icons/obj/cult.dmi'
- icon_state = "cultstone"
+ icon_state = "cult_sharpener"
used = 0
increment = 5
max = 40
prefix = "darkened"
+/obj/item/weapon/whetstone/cult/update_icon()
+ icon_state = "cult_sharpener[used ? "_used" : ""]"
+
/obj/item/weapon/reagent_containers/food/drinks/bottle/unholywater
name = "flask of unholy water"
desc = "Toxic to nonbelievers; this water renews and reinvigorates the faithful of a cult."
diff --git a/code/game/gamemodes/cult/talisman.dm b/code/game/gamemodes/cult/talisman.dm
index 4bf4bd9f9e7..7d046c82180 100644
--- a/code/game/gamemodes/cult/talisman.dm
+++ b/code/game/gamemodes/cult/talisman.dm
@@ -148,8 +148,9 @@
var/input_rune_key = input(user, "Choose a rune to teleport to.", "Rune to Teleport to") as null|anything in potential_runes //we know what key they picked
var/obj/effect/rune/teleport/actual_selected_rune = potential_runes[input_rune_key] //what rune does that key correspond to?
- if(!actual_selected_rune)
+ if(!src || qdeleted(src) || !user || user.l_hand != src && user.r_hand != src || user.incapacitated() || !actual_selected_rune)
return ..(user, 0)
+
user.visible_message("Dust flows from [user]'s hand, and they disappear in a flash of red light!", \
"You speak the words of the talisman and find yourself somewhere else!")
user.forceMove(get_turf(actual_selected_rune))
diff --git a/code/game/gamemodes/shadowling/shadowling_abilities.dm b/code/game/gamemodes/shadowling/shadowling_abilities.dm
index 55d1a2f8db7..2965456c99b 100644
--- a/code/game/gamemodes/shadowling/shadowling_abilities.dm
+++ b/code/game/gamemodes/shadowling/shadowling_abilities.dm
@@ -363,7 +363,7 @@
var/mob/living/carbon/human/H = target
H.visible_message("[H]'s skin suddenly bubbles and shifts around their body!", \
"You regenerate your protective armor and cleanse your form of defects.")
- H.adjustCloneLoss(target.getCloneLoss())
+ H.adjustCloneLoss(-target.getCloneLoss())
H.equip_to_slot_or_del(new /obj/item/clothing/under/shadowling(H), slot_w_uniform)
H.equip_to_slot_or_del(new /obj/item/clothing/shoes/shadowling(H), slot_shoes)
H.equip_to_slot_or_del(new /obj/item/clothing/suit/space/shadowling(H), slot_wear_suit)
diff --git a/code/game/gamemodes/vampire/vampire_powers.dm b/code/game/gamemodes/vampire/vampire_powers.dm
index 0d44481cc3f..9509316f787 100644
--- a/code/game/gamemodes/vampire/vampire_powers.dm
+++ b/code/game/gamemodes/vampire/vampire_powers.dm
@@ -319,6 +319,7 @@
return 0
if(!affects(C))
C.visible_message("[C] seems to resist the takeover!", "Your faith of [ticker.Bible_deity_name] has kept your mind clear of all evil.")
+ return 0
if(!ishuman(C))
to_chat(user, "You can only enthrall humans!")
return 0
diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm
index 0631095fab2..72faedec4c6 100644
--- a/code/game/machinery/computer/buildandrepair.dm
+++ b/code/game/machinery/computer/buildandrepair.dm
@@ -44,6 +44,24 @@
name = "Circuit board (Camera Monitor)"
build_path = /obj/machinery/computer/security
origin_tech = "programming=2;combat=2"
+
+/obj/item/weapon/circuitboard/camera/telescreen
+ name = "Circuit board (Telescreen)"
+ build_path = /obj/machinery/computer/security/telescreen
+/obj/item/weapon/circuitboard/camera/telescreen/entertainment
+ name = "Circuit board (Entertainment Monitor)"
+ build_path = /obj/machinery/computer/security/telescreen/entertainment
+/obj/item/weapon/circuitboard/camera/wooden_tv
+ name = "Circuit board (Wooden TV)"
+ build_path = /obj/machinery/computer/security/wooden_tv
+/obj/item/weapon/circuitboard/camera/mining
+ name = "Circuit board (Outpost Camera Monitor)"
+ build_path = /obj/machinery/computer/security/mining
+/obj/item/weapon/circuitboard/camera/engineering
+ name = "Circuit board (Engineering Camera Monitor)"
+ build_path = /obj/machinery/computer/security/engineering
+
+
/obj/item/weapon/circuitboard/xenobiology
name = "Circuit board (Xenobiology Console)"
build_path = /obj/machinery/computer/camera_advanced/xenobio
diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm
index 36647ebfc16..4235fa2a9ef 100644
--- a/code/game/machinery/computer/camera.dm
+++ b/code/game/machinery/computer/camera.dm
@@ -87,6 +87,25 @@
else
..()
+/obj/machinery/computer/security/telescreen/attackby(obj/item/I, mob/user, params)
+ if(ismultitool(I))
+ var/direction = input(user, "Which direction?", "Select direction!") as null|anything in list("North", "East", "South", "West", "Centre")
+ if(!direction || !Adjacent(user))
+ return
+ pixel_x = 0
+ pixel_y = 0
+ switch(direction)
+ if("North")
+ pixel_y = 32
+ if("East")
+ pixel_x = 32
+ if("South")
+ pixel_y = -32
+ if("West")
+ pixel_x = -32
+ else
+ ..()
+
/obj/machinery/computer/security/emag_act(user as mob)
if(!emagged)
emagged = 1
@@ -293,39 +312,36 @@
// Other computer monitors.
/obj/machinery/computer/security/telescreen
- name = "\improper Telescreen"
+ name = "telescreen"
desc = "Used for watching camera networks."
- icon = 'icons/obj/stationobjs.dmi'
- icon_state = "telescreen"
+ icon_state = "telescreen_console"
+ icon_screen = "telescreen"
+ icon_keyboard = null
light_range_on = 0
- network = list("SS13")
density = 0
-
-/obj/machinery/computer/security/telescreen/update_icon()
- icon_state = initial(icon_state)
- if(stat & BROKEN)
- icon_state += "b"
- return
+ circuit = /obj/item/weapon/circuitboard/camera/telescreen
/obj/machinery/computer/security/telescreen/entertainment
name = "entertainment monitor"
desc = "Damn, they better have Paradise TV on these things."
- icon = 'icons/obj/status_display.dmi'
- icon_state = "entertainment"
+ icon_state = "entertainment_console"
+ icon_screen = "entertainment"
light_color = "#FFEEDB"
light_range_on = 0
network = list("news")
luminosity = 0
+ circuit = /obj/item/weapon/circuitboard/camera/telescreen/entertainment
/obj/machinery/computer/security/wooden_tv
name = "security camera monitor"
- desc = "An old TV hooked into the stations camera network."
+ desc = "An old TV hooked into the station's camera network."
icon_state = "television"
icon_keyboard = null
icon_screen = "detective_tv"
light_color = "#3848B3"
light_power_on = 0.5
network = list("SS13")
+ circuit = /obj/item/weapon/circuitboard/camera/wooden_tv
/obj/machinery/computer/security/mining
name = "outpost camera monitor"
@@ -334,6 +350,7 @@
icon_screen = "mining"
light_color = "#F9BBFC"
network = list("Mining Outpost")
+ circuit = /obj/item/weapon/circuitboard/camera/mining
/obj/machinery/computer/security/engineering
name = "engineering camera monitor"
@@ -342,3 +359,4 @@
icon_screen = "engie_cams"
light_color = "#FAC54B"
network = list("Power Alarms","Atmosphere Alarms","Fire Alarms")
+ circuit = /obj/item/weapon/circuitboard/camera/engineering
\ No newline at end of file
diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm
index 818f251024c..39fa5e04037 100644
--- a/code/game/machinery/doors/brigdoors.dm
+++ b/code/game/machinery/doors/brigdoors.dm
@@ -46,7 +46,7 @@
Admission data:
Log generated at: [worldtime2text()]
Detainee: [logname]
- Duration: [timetoset/10] seconds
+ Duration: [seconds_to_time(timetoset / 10)]
Charge(s): [logcharges]
Arresting Officer: [usr.name]
This log file was generated automatically upon activation of a cell timer."}
@@ -55,7 +55,7 @@
cell_logs += P
var/datum/data/record/R = find_security_record("name", logname)
- Radio.autosay("Detainee [logname] has been incarcerated for [timetoset/10] seconds for the charges of, '[logcharges]'. \
+ Radio.autosay("Detainee [logname] has been incarcerated for [seconds_to_time(timetoset / 10)] for the charges of, '[logcharges]'. \
Arresting Officer: [usr.name].[R ? "" : " Detainee record not found, manual record update required."]", name, "Security", list(z))
if(R)
@@ -277,7 +277,7 @@
dat += "Set Timer: [(setminute ? text("[setminute]:") : null)][setsecond]
"
// Controls
- dat += "- - + +
"
+ dat += "Input Time"
// Mounted flash controls
for(var/obj/machinery/flasher/F in targets)
@@ -319,13 +319,9 @@
Radio.autosay("Timer stopped manually by [usr.name].", name, "Security", list(z))
else
- if(href_list["tp"]) //adjust timer, close door if not already closed
- var/tp = text2num(href_list["tp"])
- var/addtime = (timetoset / 10)
- addtime += tp
- addtime = min(max(round(addtime), 0), 3600)
-
- timeset(addtime)
+ if(href_list["settime"])
+ var/time = min(max(round(return_time_input(usr)), 0), 3600)
+ timeset(time)
if(href_list["fc"])
for(var/obj/machinery/flasher/F in targets)
@@ -368,6 +364,11 @@
overlays.Cut()
overlays += image('icons/obj/status_display.dmi', icon_state=picture_state)
+/obj/machinery/door_timer/proc/return_time_input()
+ var/mins = input(usr, "Minutes", "Enter number of minutes", 0) as num
+ var/seconds = input(usr, "Seconds", "Enter number of seconds", 0) as num
+ var/totaltime = (seconds + (mins * 60))
+ return totaltime
//Checks to see if there's 1 line or 2, adds text-icons-numbers/letters over display
// Stolen from status_display
diff --git a/code/game/machinery/slotmachine.dm b/code/game/machinery/slotmachine.dm
index 7775744ba45..543ea80f490 100644
--- a/code/game/machinery/slotmachine.dm
+++ b/code/game/machinery/slotmachine.dm
@@ -47,14 +47,14 @@
if(operation == 1) // Play
if(working == 1)
return
- if(!account || account.money < 10)
+ if(!account || account.money < 100)
return
- if(!account.charge(10, transaction_purpose = "Bet", dest_name = name))
+ if(!account.charge(100, transaction_purpose = "Bet", dest_name = name))
return
plays += 1
working = 1
icon_state = "slots-on"
- var/roll = rand(1,1350)
+ var/roll = rand(1,20000)
playsound(src.loc, 'sound/machines/ding.ogg', 50, 1)
spawn(25)
if(roll == 1)
diff --git a/code/game/objects/items/devices/megaphone.dm b/code/game/objects/items/devices/megaphone.dm
index c59e39a2043..20c21ca73d0 100644
--- a/code/game/objects/items/devices/megaphone.dm
+++ b/code/game/objects/items/devices/megaphone.dm
@@ -21,6 +21,11 @@
if(!user.can_speak())
to_chat(user, "You find yourself unable to speak at all.")
return
+ if(ishuman(user))
+ var/mob/living/carbon/human/abductor/H = user
+ if(H && H.mind.abductor)
+ to_chat(user, "Megaphones can't project psionic communication!")
+ return
if(ishuman(user))
var/mob/living/carbon/human/H = user
if(H && H.mind && H.mind.miming)
diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm
index a4fcc1db00b..2d790a8df1f 100644
--- a/code/game/objects/items/robot/robot_items.dm
+++ b/code/game/objects/items/robot/robot_items.dm
@@ -16,8 +16,9 @@
playsound(M, 'sound/weapons/Genhit.ogg', 50, 1)
return 0
- if(!user.cell.use(charge_cost))
- return
+ if(isrobot(user))
+ if(!user.cell.use(charge_cost))
+ return
user.do_attack_animation(M)
M.Weaken(5)
@@ -229,4 +230,4 @@
playsound(get_turf(src), 'sound/machines/warning-buzzer.ogg', 130, 3)
cooldown = world.time + 600
- log_game("[key_name(user)] used an emagged Cyborg Harm Alarm in ([user.x],[user.y],[user.z])")
\ No newline at end of file
+ log_game("[key_name(user)] used an emagged Cyborg Harm Alarm in ([user.x],[user.y],[user.z])")
diff --git a/code/game/objects/items/weapons/implants/implant_traitor.dm b/code/game/objects/items/weapons/implants/implant_traitor.dm
index 47b993b6007..5d4c88f08c3 100644
--- a/code/game/objects/items/weapons/implants/implant_traitor.dm
+++ b/code/game/objects/items/weapons/implants/implant_traitor.dm
@@ -76,6 +76,8 @@
log_admin("[ckey(user.key)] has mind-slaved [ckey(H.key)].")
activated = 1
+ if(jobban_isbanned(M, ROLE_SYNDICATE))
+ ticker.mode.replace_jobbanned_player(M, ROLE_SYNDICATE)
return 1
return 0
diff --git a/code/game/objects/items/weapons/power_cells.dm b/code/game/objects/items/weapons/power_cells.dm
index 8996f97fbea..9758fe3d4f9 100644
--- a/code/game/objects/items/weapons/power_cells.dm
+++ b/code/game/objects/items/weapons/power_cells.dm
@@ -171,6 +171,7 @@
icon_state = "yellow slime extract"
materials = list()
self_recharge = 1 // Infused slime cores self-recharge, over time
+ chargerate = 500
/obj/item/weapon/stock_parts/cell/pulse //200 pulse shots
name = "pulse rifle power cell"
diff --git a/code/game/objects/items/weapons/tanks/tank_types.dm b/code/game/objects/items/weapons/tanks/tank_types.dm
index 4778a53c28b..a59879c8c50 100644
--- a/code/game/objects/items/weapons/tanks/tank_types.dm
+++ b/code/game/objects/items/weapons/tanks/tank_types.dm
@@ -62,8 +62,8 @@
/obj/item/weapon/tank/air
name = "air tank"
desc = "Mixed anyone?"
- icon_state = "oxygen"
-
+ icon_state = "air"
+ item_state = "air"
/obj/item/weapon/tank/air/examine(mob/user)
if(..(user, 0))
diff --git a/code/game/objects/items/weapons/whetstone.dm b/code/game/objects/items/weapons/whetstone.dm
index c4595f2deb6..d951bca5a17 100644
--- a/code/game/objects/items/weapons/whetstone.dm
+++ b/code/game/objects/items/weapons/whetstone.dm
@@ -14,28 +14,28 @@
/obj/item/weapon/whetstone/attackby(obj/item/I, mob/user, params)
if(used)
- to_chat(user, "The whetstone is too worn to use again.")
+ to_chat(user, "The whetstone is too worn to use again!")
return
if(I.force >= max || I.throwforce >= max)//no esword sharpening
- to_chat(user, "[I] is much too powerful to sharpen further.")
+ to_chat(user, "[I] is much too powerful to sharpen further!")
return
if(requires_sharpness && !I.sharp)
- to_chat(user, "You can only sharpen items that are already sharp, such as knives.")
+ to_chat(user, "You can only sharpen items that are already sharp, such as knives!")
return
if(istype(I, /obj/item/weapon/twohanded))//some twohanded items should still be sharpenable, but handle force differently. therefore i need this stuff
var/obj/item/weapon/twohanded/TH = I
if(TH.force_wielded >= max)
- to_chat(user, "[TH] is much too powerful to sharpen further.")
+ to_chat(user, "[TH] is much too powerful to sharpen further!")
return
if(TH.wielded)
- to_chat(user, "[TH] must be unwielded before it can be sharpened.")
+ to_chat(user, "[TH] must be unwielded before it can be sharpened!")
return
if(TH.force_wielded > initial(TH.force_wielded))
- to_chat(user, "[TH] has already been refined before. It cannot be sharpened further.")
+ to_chat(user, "[TH] has already been refined before. It cannot be sharpened further!")
return
TH.force_wielded = Clamp(TH.force_wielded + increment, 0, max)//wieldforce is increased since normal force wont stay
if(I.force > initial(I.force))
- to_chat(user, "[I] has already been refined before. It cannot be sharpened further.")
+ to_chat(user, "[I] has already been refined before. It cannot be sharpened further!")
return
user.visible_message("[user] sharpens [I] with [src]!", "You sharpen [I], making it much more deadly than before.")
if(!requires_sharpness)
@@ -47,6 +47,7 @@
name = "worn out [name]"
desc = "[desc] At least, it used to."
used = 1
+ update_icon()
/obj/item/weapon/whetstone/attack_self(mob/user as mob) //This is just fluff for now. Species datums are global and not newly created instances, so we can't adjust unarmed damage on a per mob basis.
if(ishuman(user))
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index d5b966c7d98..e989cea7e85 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -8,6 +8,8 @@
var/icon_opened = "open"
var/opened = 0
var/welded = 0
+ var/locked = 0
+ var/broken = 0
var/wall_mounted = 0 //never solid (You can always pass over it)
var/health = 100
var/lastbang
diff --git a/code/game/objects/structures/crates_lockers/closets/fireaxe.dm b/code/game/objects/structures/crates_lockers/closets/fireaxe.dm
index aeb8101fc75..5baef28f262 100644
--- a/code/game/objects/structures/crates_lockers/closets/fireaxe.dm
+++ b/code/game/objects/structures/crates_lockers/closets/fireaxe.dm
@@ -11,7 +11,7 @@
var/localopened = 0 //Setting this to keep it from behaviouring like a normal closet and obstructing movement in the map. -Agouri
opened = 1
var/hitstaken = 0
- var/locked = 1
+ locked = 1
var/smashed = 0
attackby(var/obj/item/O as obj, var/mob/living/user as mob) //Marker -Agouri
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/bar.dm b/code/game/objects/structures/crates_lockers/closets/secure/bar.dm
index 49006fb7fb5..eb60d578e46 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/bar.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/bar.dm
@@ -10,19 +10,18 @@
burn_state = FLAMMABLE
burntime = 20
-
- New()
- ..()
- new /obj/item/weapon/reagent_containers/food/drinks/cans/beer( src )
- new /obj/item/weapon/reagent_containers/food/drinks/cans/beer( src )
- new /obj/item/weapon/reagent_containers/food/drinks/cans/beer( src )
- new /obj/item/weapon/reagent_containers/food/drinks/cans/beer( src )
- new /obj/item/weapon/reagent_containers/food/drinks/cans/beer( src )
- new /obj/item/weapon/reagent_containers/food/drinks/cans/beer( src )
- new /obj/item/weapon/reagent_containers/food/drinks/cans/beer( src )
- new /obj/item/weapon/reagent_containers/food/drinks/cans/beer( src )
- new /obj/item/weapon/reagent_containers/food/drinks/cans/beer( src )
- new /obj/item/weapon/reagent_containers/food/drinks/cans/beer( src )
+/obj/structure/closet/secure_closet/bar/New()
+ ..()
+ new /obj/item/weapon/reagent_containers/food/drinks/cans/beer( src )
+ new /obj/item/weapon/reagent_containers/food/drinks/cans/beer( src )
+ new /obj/item/weapon/reagent_containers/food/drinks/cans/beer( src )
+ new /obj/item/weapon/reagent_containers/food/drinks/cans/beer( src )
+ new /obj/item/weapon/reagent_containers/food/drinks/cans/beer( src )
+ new /obj/item/weapon/reagent_containers/food/drinks/cans/beer( src )
+ new /obj/item/weapon/reagent_containers/food/drinks/cans/beer( src )
+ new /obj/item/weapon/reagent_containers/food/drinks/cans/beer( src )
+ new /obj/item/weapon/reagent_containers/food/drinks/cans/beer( src )
+ new /obj/item/weapon/reagent_containers/food/drinks/cans/beer( src )
/obj/structure/closet/secure_closet/bar/update_icon()
if(broken)
@@ -34,4 +33,4 @@
else
icon_state = icon_closed
else
- icon_state = icon_opened
\ No newline at end of file
+ icon_state = icon_opened
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm
index 74b811eae24..ee5ea755e04 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/cargo.dm
@@ -8,16 +8,17 @@
icon_broken = "securecargobroken"
icon_off = "securecargooff"
- New()
- ..()
- new /obj/item/clothing/under/rank/cargotech(src)
- new /obj/item/clothing/under/rank/cargotech/skirt(src)
- new /obj/item/clothing/shoes/black(src)
- new /obj/item/device/radio/headset/headset_cargo(src)
- new /obj/item/clothing/gloves/fingerless(src)
- new /obj/item/clothing/head/soft(src)
+/obj/structure/closet/secure_closet/cargotech/New()
+ ..()
+ new /obj/item/clothing/under/rank/cargotech(src)
+ new /obj/item/clothing/under/rank/cargotech/skirt(src)
+ new /obj/item/clothing/shoes/black(src)
+ new /obj/item/device/radio/headset/headset_cargo(src)
+ new /obj/item/clothing/gloves/fingerless(src)
+ new /obj/item/clothing/head/soft(src)
// new /obj/item/weapon/cartridge/quartermaster(src)
+
/obj/structure/closet/secure_closet/quartermaster
name = "quartermaster's locker"
req_access = list(access_qm)
@@ -28,16 +29,16 @@
icon_broken = "secureqmbroken"
icon_off = "secureqmoff"
- New()
- ..()
- new /obj/item/clothing/under/rank/cargo(src)
- new /obj/item/clothing/under/rank/cargo/skirt(src)
- new /obj/item/clothing/shoes/brown(src)
- new /obj/item/device/radio/headset/headset_cargo(src)
- new /obj/item/clothing/gloves/fingerless(src)
- new /obj/item/clothing/suit/fire/firefighter(src)
- new /obj/item/weapon/tank/emergency_oxygen(src)
- new /obj/item/clothing/mask/gas(src)
- new /obj/item/clothing/glasses/meson(src)
- new /obj/item/clothing/head/soft(src)
- new /obj/item/weapon/door_remote/quartermaster(src)
\ No newline at end of file
+/obj/structure/closet/secure_closet/quartermaster/New()
+ ..()
+ new /obj/item/clothing/under/rank/cargo(src)
+ new /obj/item/clothing/under/rank/cargo/skirt(src)
+ new /obj/item/clothing/shoes/brown(src)
+ new /obj/item/device/radio/headset/headset_cargo(src)
+ new /obj/item/clothing/gloves/fingerless(src)
+ new /obj/item/clothing/suit/fire/firefighter(src)
+ new /obj/item/weapon/tank/emergency_oxygen(src)
+ new /obj/item/clothing/mask/gas(src)
+ new /obj/item/clothing/glasses/meson(src)
+ new /obj/item/clothing/head/soft(src)
+ new /obj/item/weapon/door_remote/quartermaster(src)
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm
index 1af8b2653b8..d8b4d6906a4 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/engineering.dm
@@ -8,33 +8,34 @@
icon_broken = "securecebroken"
icon_off = "secureceoff"
- New()
- ..()
- if(prob(50))
- new /obj/item/weapon/storage/backpack/industrial(src)
- else
- new /obj/item/weapon/storage/backpack/satchel_eng(src)
- new /obj/item/weapon/storage/backpack/duffel/engineering(src)
- new /obj/item/clothing/head/beret/ce(src)
- new /obj/item/areaeditor/blueprints(src)
- new /obj/item/weapon/storage/box/permits(src)
- new /obj/item/clothing/under/rank/chief_engineer(src)
- new /obj/item/clothing/under/rank/chief_engineer/skirt(src)
- new /obj/item/clothing/head/hardhat/white(src)
- new /obj/item/clothing/glasses/welding/superior(src)
- new /obj/item/clothing/gloves/color/yellow(src)
- new /obj/item/clothing/shoes/brown(src)
- new /obj/item/weapon/cartridge/ce(src)
- new /obj/item/device/radio/headset/heads/ce(src)
- new /obj/item/weapon/storage/toolbox/mechanical(src)
- new /obj/item/clothing/suit/storage/hazardvest(src)
- new /obj/item/clothing/mask/gas(src)
- new /obj/item/device/multitool(src)
- new /obj/item/device/flash(src)
- new /obj/item/taperoll/engineering(src)
- new /obj/item/clothing/head/beret/eng(src)
- new /obj/item/weapon/door_remote/chief_engineer(src)
- new /obj/item/weapon/rpd(src)
+/obj/structure/closet/secure_closet/engineering_chief/New()
+ ..()
+ if(prob(50))
+ new /obj/item/weapon/storage/backpack/industrial(src)
+ else
+ new /obj/item/weapon/storage/backpack/satchel_eng(src)
+ new /obj/item/weapon/storage/backpack/duffel/engineering(src)
+ new /obj/item/clothing/head/beret/ce(src)
+ new /obj/item/areaeditor/blueprints(src)
+ new /obj/item/weapon/storage/box/permits(src)
+ new /obj/item/clothing/under/rank/chief_engineer(src)
+ new /obj/item/clothing/under/rank/chief_engineer/skirt(src)
+ new /obj/item/clothing/head/hardhat/white(src)
+ new /obj/item/clothing/glasses/welding/superior(src)
+ new /obj/item/clothing/gloves/color/yellow(src)
+ new /obj/item/clothing/shoes/brown(src)
+ new /obj/item/weapon/cartridge/ce(src)
+ new /obj/item/device/radio/headset/heads/ce(src)
+ new /obj/item/weapon/storage/toolbox/mechanical(src)
+ new /obj/item/clothing/suit/storage/hazardvest(src)
+ new /obj/item/clothing/mask/gas(src)
+ new /obj/item/device/multitool(src)
+ new /obj/item/device/flash(src)
+ new /obj/item/taperoll/engineering(src)
+ new /obj/item/clothing/head/beret/eng(src)
+ new /obj/item/weapon/door_remote/chief_engineer(src)
+ new /obj/item/weapon/rpd(src)
+
/obj/structure/closet/secure_closet/engineering_electrical
name = "electrical supplies locker"
@@ -46,22 +47,20 @@
icon_broken = "secureengelecbroken"
icon_off = "secureengelecoff"
-
- New()
- ..()
- new /obj/item/clothing/gloves/color/yellow(src)
- new /obj/item/clothing/gloves/color/yellow(src)
- new /obj/item/weapon/storage/toolbox/electrical(src)
- new /obj/item/weapon/storage/toolbox/electrical(src)
- new /obj/item/weapon/storage/toolbox/electrical(src)
- new /obj/item/weapon/apc_electronics(src)
- new /obj/item/weapon/apc_electronics(src)
- new /obj/item/weapon/apc_electronics(src)
- new /obj/item/device/multitool(src)
- new /obj/item/device/multitool(src)
- new /obj/item/device/multitool(src)
- new /obj/item/clothing/head/beret/eng
-
+/obj/structure/closet/secure_closet/engineering_electrical/New()
+ ..()
+ new /obj/item/clothing/gloves/color/yellow(src)
+ new /obj/item/clothing/gloves/color/yellow(src)
+ new /obj/item/weapon/storage/toolbox/electrical(src)
+ new /obj/item/weapon/storage/toolbox/electrical(src)
+ new /obj/item/weapon/storage/toolbox/electrical(src)
+ new /obj/item/weapon/apc_electronics(src)
+ new /obj/item/weapon/apc_electronics(src)
+ new /obj/item/weapon/apc_electronics(src)
+ new /obj/item/device/multitool(src)
+ new /obj/item/device/multitool(src)
+ new /obj/item/device/multitool(src)
+ new /obj/item/clothing/head/beret/eng
/obj/structure/closet/secure_closet/engineering_welding
@@ -74,16 +73,14 @@
icon_broken = "secureengweldbroken"
icon_off = "secureengweldoff"
-
- New()
- ..()
- new /obj/item/clothing/head/welding(src)
- new /obj/item/clothing/head/welding(src)
- new /obj/item/clothing/head/welding(src)
- new /obj/item/weapon/weldingtool/largetank(src)
- new /obj/item/weapon/weldingtool/largetank(src)
- new /obj/item/weapon/weldingtool/largetank(src)
-
+/obj/structure/closet/secure_closet/engineering_welding/New()
+ ..()
+ new /obj/item/clothing/head/welding(src)
+ new /obj/item/clothing/head/welding(src)
+ new /obj/item/clothing/head/welding(src)
+ new /obj/item/weapon/weldingtool/largetank(src)
+ new /obj/item/weapon/weldingtool/largetank(src)
+ new /obj/item/weapon/weldingtool/largetank(src)
/obj/structure/closet/secure_closet/engineering_personal
@@ -96,24 +93,24 @@
icon_broken = "secureengbroken"
icon_off = "secureengoff"
+/obj/structure/closet/secure_closet/engineering_personal/New()
+ ..()
+ if(prob(50))
+ new /obj/item/weapon/storage/backpack/industrial(src)
+ else
+ new /obj/item/weapon/storage/backpack/satchel_eng(src)
+ new /obj/item/weapon/storage/backpack/duffel/engineering(src)
+ new /obj/item/weapon/storage/toolbox/mechanical(src)
+ new /obj/item/device/radio/headset/headset_eng(src)
+ new /obj/item/clothing/under/rank/engineer(src)
+ new /obj/item/clothing/under/rank/engineer/skirt(src)
+ new /obj/item/clothing/suit/storage/hazardvest(src)
+ new /obj/item/clothing/mask/gas(src)
+ new /obj/item/clothing/glasses/meson(src)
+ new /obj/item/weapon/cartridge/engineering(src)
+ new /obj/item/taperoll/engineering(src)
+ new /obj/item/clothing/head/beret/eng(src)
- New()
- ..()
- if(prob(50))
- new /obj/item/weapon/storage/backpack/industrial(src)
- else
- new /obj/item/weapon/storage/backpack/satchel_eng(src)
- new /obj/item/weapon/storage/backpack/duffel/engineering(src)
- new /obj/item/weapon/storage/toolbox/mechanical(src)
- new /obj/item/device/radio/headset/headset_eng(src)
- new /obj/item/clothing/under/rank/engineer(src)
- new /obj/item/clothing/under/rank/engineer/skirt(src)
- new /obj/item/clothing/suit/storage/hazardvest(src)
- new /obj/item/clothing/mask/gas(src)
- new /obj/item/clothing/glasses/meson(src)
- new /obj/item/weapon/cartridge/engineering(src)
- new /obj/item/taperoll/engineering(src)
- new /obj/item/clothing/head/beret/eng(src)
/obj/structure/closet/secure_closet/atmos_personal
name = "technician's locker"
@@ -125,23 +122,22 @@
icon_broken = "secureatmbroken"
icon_off = "secureatmoff"
-
- New()
- ..()
- new /obj/item/device/radio/headset/headset_eng(src)
- new /obj/item/weapon/cartridge/atmos(src)
- new /obj/item/weapon/storage/toolbox/mechanical(src)
- new /obj/item/taperoll/engineering(src)
- if(prob(50))
- new /obj/item/weapon/storage/backpack/industrial(src)
- else
- new /obj/item/weapon/storage/backpack/satchel_eng(src)
- new /obj/item/weapon/storage/backpack/duffel/atmos(src)
- new /obj/item/weapon/extinguisher(src)
- new /obj/item/clothing/suit/storage/hazardvest(src)
- new /obj/item/clothing/mask/gas(src)
- new /obj/item/weapon/tank/emergency_oxygen/engi(src)
- new /obj/item/weapon/watertank/atmos(src)
- new /obj/item/clothing/suit/fire/atmos(src)
- new /obj/item/clothing/head/hardhat/atmos(src)
- new /obj/item/weapon/rpd(src)
+/obj/structure/closet/secure_closet/atmos_personal/New()
+ ..()
+ new /obj/item/device/radio/headset/headset_eng(src)
+ new /obj/item/weapon/cartridge/atmos(src)
+ new /obj/item/weapon/storage/toolbox/mechanical(src)
+ new /obj/item/taperoll/engineering(src)
+ if(prob(50))
+ new /obj/item/weapon/storage/backpack/industrial(src)
+ else
+ new /obj/item/weapon/storage/backpack/satchel_eng(src)
+ new /obj/item/weapon/storage/backpack/duffel/atmos(src)
+ new /obj/item/weapon/extinguisher(src)
+ new /obj/item/clothing/suit/storage/hazardvest(src)
+ new /obj/item/clothing/mask/gas(src)
+ new /obj/item/weapon/tank/emergency_oxygen/engi(src)
+ new /obj/item/weapon/watertank/atmos(src)
+ new /obj/item/clothing/suit/fire/atmos(src)
+ new /obj/item/clothing/head/hardhat/atmos(src)
+ new /obj/item/weapon/rpd(src)
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm
index b0e7c0e00cb..36a1241826f 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/freezer.dm
@@ -23,6 +23,7 @@
if(!isemptylist(bombs)) // You're fucked.
..(severity)
+
/obj/structure/closet/secure_closet/freezer/kitchen
name = "kitchen cabinet"
req_access = list(access_kitchen)
@@ -35,12 +36,10 @@
new /obj/item/weapon/reagent_containers/food/condiment/sugar(src)
-
/obj/structure/closet/secure_closet/freezer/kitchen/mining
req_access = list()
-
/obj/structure/closet/secure_closet/freezer/meat
name = "meat fridge"
icon_state = "fridge1"
@@ -50,12 +49,10 @@
icon_broken = "fridgebroken"
icon_off = "fridge1"
-
- New()
- ..()
- for(var/i in 1 to 4)
- new /obj/item/weapon/reagent_containers/food/snacks/meat/monkey(src)
-
+/obj/structure/closet/secure_closet/freezer/meat/New()
+ ..()
+ for(var/i in 1 to 4)
+ new /obj/item/weapon/reagent_containers/food/snacks/meat/monkey(src)
/obj/structure/closet/secure_closet/freezer/fridge
@@ -67,15 +64,13 @@
icon_broken = "fridgebroken"
icon_off = "fridge1"
-
- New()
- ..()
- for(var/i in 1 to 5)
- new /obj/item/weapon/reagent_containers/food/condiment/milk(src)
- new /obj/item/weapon/reagent_containers/food/condiment/soymilk(src)
- for(var/i in 1 to 2)
- new /obj/item/weapon/storage/fancy/egg_box(src)
-
+/obj/structure/closet/secure_closet/freezer/fridge/New()
+ ..()
+ for(var/i in 1 to 5)
+ new /obj/item/weapon/reagent_containers/food/condiment/milk(src)
+ new /obj/item/weapon/reagent_containers/food/condiment/soymilk(src)
+ for(var/i in 1 to 2)
+ new /obj/item/weapon/storage/fancy/egg_box(src)
/obj/structure/closet/secure_closet/freezer/money
@@ -96,10 +91,3 @@
new /obj/item/stack/spacecash/c500(src)
for(var/i in 1 to 6)
new /obj/item/stack/spacecash/c200(src)
-
-
-
-
-
-
-
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
index c0603396325..02dabdaafbd 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
@@ -9,20 +9,18 @@
icon_off = "medicaloff"
req_access = list(access_medical)
-
- New()
- ..()
- new /obj/item/weapon/storage/box/autoinjectors(src)
- new /obj/item/weapon/storage/box/syringes(src)
- new /obj/item/weapon/reagent_containers/dropper(src)
- new /obj/item/weapon/reagent_containers/dropper(src)
- new /obj/item/weapon/reagent_containers/glass/beaker(src)
- new /obj/item/weapon/reagent_containers/glass/beaker(src)
- new /obj/item/weapon/reagent_containers/glass/bottle/epinephrine(src)
- new /obj/item/weapon/reagent_containers/glass/bottle/epinephrine(src)
- new /obj/item/weapon/reagent_containers/glass/bottle/charcoal(src)
- new /obj/item/weapon/reagent_containers/glass/bottle/charcoal(src)
-
+/obj/structure/closet/secure_closet/medical1/New()
+ ..()
+ new /obj/item/weapon/storage/box/autoinjectors(src)
+ new /obj/item/weapon/storage/box/syringes(src)
+ new /obj/item/weapon/reagent_containers/dropper(src)
+ new /obj/item/weapon/reagent_containers/dropper(src)
+ new /obj/item/weapon/reagent_containers/glass/beaker(src)
+ new /obj/item/weapon/reagent_containers/glass/beaker(src)
+ new /obj/item/weapon/reagent_containers/glass/bottle/epinephrine(src)
+ new /obj/item/weapon/reagent_containers/glass/bottle/epinephrine(src)
+ new /obj/item/weapon/reagent_containers/glass/bottle/charcoal(src)
+ new /obj/item/weapon/reagent_containers/glass/bottle/charcoal(src)
/obj/structure/closet/secure_closet/medical2
@@ -36,16 +34,14 @@
icon_off = "medicaloff"
req_access = list(access_surgery)
-
- New()
- ..()
- new /obj/item/weapon/tank/anesthetic(src)
- new /obj/item/weapon/tank/anesthetic(src)
- new /obj/item/weapon/tank/anesthetic(src)
- new /obj/item/clothing/mask/breath/medical(src)
- new /obj/item/clothing/mask/breath/medical(src)
- new /obj/item/clothing/mask/breath/medical(src)
-
+/obj/structure/closet/secure_closet/medical2/New()
+ ..()
+ new /obj/item/weapon/tank/anesthetic(src)
+ new /obj/item/weapon/tank/anesthetic(src)
+ new /obj/item/weapon/tank/anesthetic(src)
+ new /obj/item/clothing/mask/breath/medical(src)
+ new /obj/item/clothing/mask/breath/medical(src)
+ new /obj/item/clothing/mask/breath/medical(src)
/obj/structure/closet/secure_closet/medical3
@@ -58,22 +54,23 @@
icon_broken = "securemedbroken"
icon_off = "securemedoff"
- New()
- ..()
- if(prob(50))
- new /obj/item/weapon/storage/backpack/medic(src)
- else
- new /obj/item/weapon/storage/backpack/satchel_med(src)
- new /obj/item/weapon/storage/backpack/duffel/medical(src)
- new /obj/item/clothing/under/rank/medical(src)
- new /obj/item/clothing/suit/storage/labcoat(src)
- new /obj/item/clothing/shoes/white(src)
- new /obj/item/device/radio/headset/headset_med(src)
- new /obj/item/clothing/gloves/color/latex/nitrile(src)
- new /obj/item/weapon/defibrillator/loaded(src)
- new /obj/item/weapon/storage/belt/medical(src)
- new /obj/item/clothing/glasses/hud/health(src)
- new /obj/item/clothing/shoes/sandal/white(src)
+/obj/structure/closet/secure_closet/medical3/New()
+ ..()
+ if(prob(50))
+ new /obj/item/weapon/storage/backpack/medic(src)
+ else
+ new /obj/item/weapon/storage/backpack/satchel_med(src)
+ new /obj/item/weapon/storage/backpack/duffel/medical(src)
+ new /obj/item/clothing/under/rank/medical(src)
+ new /obj/item/clothing/suit/storage/labcoat(src)
+ new /obj/item/clothing/shoes/white(src)
+ new /obj/item/device/radio/headset/headset_med(src)
+ new /obj/item/clothing/gloves/color/latex/nitrile(src)
+ new /obj/item/weapon/defibrillator/loaded(src)
+ new /obj/item/weapon/storage/belt/medical(src)
+ new /obj/item/clothing/glasses/hud/health(src)
+ new /obj/item/clothing/shoes/sandal/white(src)
+
//Exam Room
/obj/structure/closet/secure_closet/exam
@@ -87,23 +84,22 @@
icon_off = "medicaloff"
req_access = list(access_medical)
-
- New()
- ..()
- new /obj/item/weapon/storage/box/syringes(src)
- new /obj/item/weapon/reagent_containers/dropper(src)
- new /obj/item/weapon/storage/belt/medical(src)
- new /obj/item/clothing/mask/surgical(src)
- new /obj/item/clothing/glasses/hud/health(src)
- new /obj/item/clothing/gloves/color/latex/nitrile(src)
- new /obj/item/clothing/accessory/stethoscope(src)
- new /obj/item/device/flashlight/pen(src)
- new /obj/item/weapon/storage/firstaid/regular(src)
- new /obj/item/weapon/storage/firstaid/adv(src)
- new /obj/item/weapon/storage/firstaid/brute(src)
- new /obj/item/weapon/storage/firstaid/fire(src)
- new /obj/item/weapon/storage/firstaid/o2(src)
- new /obj/item/weapon/storage/firstaid/toxin(src)
+/obj/structure/closet/secure_closet/exam/New()
+ ..()
+ new /obj/item/weapon/storage/box/syringes(src)
+ new /obj/item/weapon/reagent_containers/dropper(src)
+ new /obj/item/weapon/storage/belt/medical(src)
+ new /obj/item/clothing/mask/surgical(src)
+ new /obj/item/clothing/glasses/hud/health(src)
+ new /obj/item/clothing/gloves/color/latex/nitrile(src)
+ new /obj/item/clothing/accessory/stethoscope(src)
+ new /obj/item/device/flashlight/pen(src)
+ new /obj/item/weapon/storage/firstaid/regular(src)
+ new /obj/item/weapon/storage/firstaid/adv(src)
+ new /obj/item/weapon/storage/firstaid/brute(src)
+ new /obj/item/weapon/storage/firstaid/fire(src)
+ new /obj/item/weapon/storage/firstaid/o2(src)
+ new /obj/item/weapon/storage/firstaid/toxin(src)
// Psychiatrist's pill bottle
@@ -128,12 +124,13 @@
icon_broken = "securemedbroken"
icon_off = "securemedoff"
- New()
- ..()
- new /obj/item/clothing/suit/straight_jacket(src)
- new /obj/item/weapon/reagent_containers/syringe(src)
- new /obj/item/weapon/reagent_containers/glass/bottle/ether(src)
- new /obj/item/weapon/storage/pill_bottle/psychiatrist(src)
+/obj/structure/closet/secure_closet/psychiatrist/New()
+ ..()
+ new /obj/item/clothing/suit/straight_jacket(src)
+ new /obj/item/weapon/reagent_containers/syringe(src)
+ new /obj/item/weapon/reagent_containers/glass/bottle/ether(src)
+ new /obj/item/weapon/storage/pill_bottle/psychiatrist(src)
+
/obj/structure/closet/secure_closet/CMO
name = "chief medical officer's locker"
@@ -145,52 +142,49 @@
icon_broken = "cmosecurebroken"
icon_off = "cmosecureoff"
- New()
- ..()
- if(prob(50))
- new /obj/item/weapon/storage/backpack/medic(src)
- else
- new /obj/item/weapon/storage/backpack/satchel_med(src)
- new /obj/item/weapon/storage/backpack/duffel/medical(src)
- new /obj/item/clothing/suit/bio_suit/cmo(src)
- new /obj/item/clothing/head/bio_hood/cmo(src)
- new /obj/item/clothing/shoes/white(src)
- switch(pick("blue", "green", "purple"))
- if("blue")
- new /obj/item/clothing/under/rank/medical/blue(src)
- new /obj/item/clothing/head/surgery/blue(src)
- if("green")
- new /obj/item/clothing/under/rank/medical/green(src)
- new /obj/item/clothing/head/surgery/green(src)
- if("purple")
- new /obj/item/clothing/under/rank/medical/purple(src)
- new /obj/item/clothing/head/surgery/purple(src)
- new /obj/item/clothing/suit/storage/labcoat/cmo(src)
- new /obj/item/clothing/under/rank/chief_medical_officer(src)
- new /obj/item/clothing/shoes/brown (src)
- new /obj/item/device/radio/headset/heads/cmo(src)
- new /obj/item/clothing/gloves/color/latex/nitrile(src)
- new /obj/item/weapon/defibrillator/compact/loaded(src)
- new /obj/item/weapon/storage/belt/medical(src)
- new /obj/item/device/flash(src)
- new /obj/item/weapon/reagent_containers/hypospray/CMO(src)
- new /obj/item/organ/internal/cyberimp/eyes/hud/medical(src)
- new /obj/item/weapon/door_remote/chief_medical_officer(src)
-
+/obj/structure/closet/secure_closet/CMO/New()
+ ..()
+ if(prob(50))
+ new /obj/item/weapon/storage/backpack/medic(src)
+ else
+ new /obj/item/weapon/storage/backpack/satchel_med(src)
+ new /obj/item/weapon/storage/backpack/duffel/medical(src)
+ new /obj/item/clothing/suit/bio_suit/cmo(src)
+ new /obj/item/clothing/head/bio_hood/cmo(src)
+ new /obj/item/clothing/shoes/white(src)
+ switch(pick("blue", "green", "purple"))
+ if("blue")
+ new /obj/item/clothing/under/rank/medical/blue(src)
+ new /obj/item/clothing/head/surgery/blue(src)
+ if("green")
+ new /obj/item/clothing/under/rank/medical/green(src)
+ new /obj/item/clothing/head/surgery/green(src)
+ if("purple")
+ new /obj/item/clothing/under/rank/medical/purple(src)
+ new /obj/item/clothing/head/surgery/purple(src)
+ new /obj/item/clothing/suit/storage/labcoat/cmo(src)
+ new /obj/item/clothing/under/rank/chief_medical_officer(src)
+ new /obj/item/clothing/shoes/brown (src)
+ new /obj/item/device/radio/headset/heads/cmo(src)
+ new /obj/item/clothing/gloves/color/latex/nitrile(src)
+ new /obj/item/weapon/defibrillator/compact/loaded(src)
+ new /obj/item/weapon/storage/belt/medical(src)
+ new /obj/item/device/flash(src)
+ new /obj/item/weapon/reagent_containers/hypospray/CMO(src)
+ new /obj/item/organ/internal/cyberimp/eyes/hud/medical(src)
+ new /obj/item/weapon/door_remote/chief_medical_officer(src)
/obj/structure/closet/secure_closet/animal
name = "animal control locker"
req_access = list(access_surgery)
-
- New()
- ..()
- new /obj/item/device/assembly/signaler(src)
- new /obj/item/device/radio/electropack(src)
- new /obj/item/device/radio/electropack(src)
- new /obj/item/device/radio/electropack(src)
-
+/obj/structure/closet/secure_closet/animal/New()
+ ..()
+ new /obj/item/device/assembly/signaler(src)
+ new /obj/item/device/radio/electropack(src)
+ new /obj/item/device/radio/electropack(src)
+ new /obj/item/device/radio/electropack(src)
/obj/structure/closet/secure_closet/chemical
@@ -204,11 +198,11 @@
icon_off = "medicaloff"
req_access = list(access_chemistry)
+/obj/structure/closet/secure_closet/chemical/New()
+ ..()
+ new /obj/item/weapon/storage/box/pillbottles(src)
+ new /obj/item/weapon/storage/box/pillbottles(src)
- New()
- ..()
- new /obj/item/weapon/storage/box/pillbottles(src)
- new /obj/item/weapon/storage/box/pillbottles(src)
/obj/structure/closet/secure_closet/medical_wall
name = "first aid closet"
@@ -247,13 +241,12 @@
icon_off = "medicaloff"
req_access = list(access_paramedic)
-
- New()
- ..()
- new /obj/item/clothing/suit/space/eva/paramedic(src)
- new /obj/item/clothing/head/helmet/space/eva/paramedic(src)
- new /obj/item/clothing/head/helmet/space/eva/paramedic(src)
- new /obj/item/device/sensor_device(src)
+/obj/structure/closet/secure_closet/paramedic/New()
+ ..()
+ new /obj/item/clothing/suit/space/eva/paramedic(src)
+ new /obj/item/clothing/head/helmet/space/eva/paramedic(src)
+ new /obj/item/clothing/head/helmet/space/eva/paramedic(src)
+ new /obj/item/device/sensor_device(src)
/obj/structure/closet/secure_closet/reagents
name = "chemical storage closet"
@@ -266,12 +259,11 @@
icon_off = "chemicaloff"
req_access = list(access_chemistry)
-
- New()
- ..()
- new /obj/item/weapon/reagent_containers/glass/bottle/reagent/phenol(src)
- new /obj/item/weapon/reagent_containers/glass/bottle/reagent/ammonia(src)
- new /obj/item/weapon/reagent_containers/glass/bottle/reagent/oil(src)
- new /obj/item/weapon/reagent_containers/glass/bottle/reagent/acetone(src)
- new /obj/item/weapon/reagent_containers/glass/bottle/reagent/acid(src)
- new /obj/item/weapon/reagent_containers/glass/bottle/reagent/diethylamine(src)
+/obj/structure/closet/secure_closet/reagents/New()
+ ..()
+ new /obj/item/weapon/reagent_containers/glass/bottle/reagent/phenol(src)
+ new /obj/item/weapon/reagent_containers/glass/bottle/reagent/ammonia(src)
+ new /obj/item/weapon/reagent_containers/glass/bottle/reagent/oil(src)
+ new /obj/item/weapon/reagent_containers/glass/bottle/reagent/acetone(src)
+ new /obj/item/weapon/reagent_containers/glass/bottle/reagent/acid(src)
+ new /obj/item/weapon/reagent_containers/glass/bottle/reagent/diethylamine(src)
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm
index 4d15ec55644..7e1b6d83091 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm
@@ -8,19 +8,19 @@
icon_broken = "secureresbroken"
icon_off = "secureresoff"
- New()
- ..()
- new /obj/item/weapon/storage/backpack/science(src)
- new /obj/item/weapon/storage/backpack/satchel_tox(src)
- new /obj/item/clothing/under/rank/scientist(src)
- //new /obj/item/clothing/suit/labcoat/science(src)
- new /obj/item/clothing/suit/storage/labcoat/science(src)
- new /obj/item/clothing/shoes/white(src)
+/obj/structure/closet/secure_closet/scientist/New()
+ ..()
+ new /obj/item/weapon/storage/backpack/science(src)
+ new /obj/item/weapon/storage/backpack/satchel_tox(src)
+ new /obj/item/clothing/under/rank/scientist(src)
+ //new /obj/item/clothing/suit/labcoat/science(src)
+ new /obj/item/clothing/suit/storage/labcoat/science(src)
+ new /obj/item/clothing/shoes/white(src)
// new /obj/item/weapon/cartridge/signal/toxins(src)
- new /obj/item/device/radio/headset/headset_sci(src)
- new /obj/item/weapon/tank/air(src)
- new /obj/item/clothing/mask/gas(src)
- new /obj/item/clothing/shoes/sandal/white(src)
+ new /obj/item/device/radio/headset/headset_sci(src)
+ new /obj/item/weapon/tank/air(src)
+ new /obj/item/clothing/mask/gas(src)
+ new /obj/item/clothing/shoes/sandal/white(src)
/obj/structure/closet/secure_closet/roboticist
name = "roboticist's locker"
@@ -32,18 +32,18 @@
icon_broken = "secureresbroken"
icon_off = "secureresoff"
- New()
- ..()
- new /obj/item/weapon/storage/backpack(src)
- new /obj/item/weapon/storage/backpack(src)
- new /obj/item/weapon/storage/backpack/satchel_norm(src)
- new /obj/item/weapon/storage/backpack/satchel_norm(src)
- new /obj/item/weapon/storage/backpack/duffel(src)
- new /obj/item/weapon/storage/backpack/duffel(src)
- new /obj/item/clothing/suit/storage/labcoat(src)
- new /obj/item/clothing/suit/storage/labcoat(src)
- new /obj/item/device/radio/headset/headset_sci(src)
- new /obj/item/device/radio/headset/headset_sci(src)
+/obj/structure/closet/secure_closet/roboticist/New()
+ ..()
+ new /obj/item/weapon/storage/backpack(src)
+ new /obj/item/weapon/storage/backpack(src)
+ new /obj/item/weapon/storage/backpack/satchel_norm(src)
+ new /obj/item/weapon/storage/backpack/satchel_norm(src)
+ new /obj/item/weapon/storage/backpack/duffel(src)
+ new /obj/item/weapon/storage/backpack/duffel(src)
+ new /obj/item/clothing/suit/storage/labcoat(src)
+ new /obj/item/clothing/suit/storage/labcoat(src)
+ new /obj/item/device/radio/headset/headset_sci(src)
+ new /obj/item/device/radio/headset/headset_sci(src)
/obj/structure/closet/secure_closet/RD
name = "research director's locker"
@@ -55,22 +55,23 @@
icon_broken = "rdsecurebroken"
icon_off = "rdsecureoff"
- New()
- ..()
- new /obj/item/clothing/suit/bio_suit/scientist(src)
- new /obj/item/clothing/head/bio_hood/scientist(src)
- new /obj/item/clothing/under/rank/research_director(src)
- new /obj/item/clothing/suit/storage/labcoat(src)
- new /obj/item/weapon/cartridge/rd(src)
- new /obj/item/clothing/shoes/white(src)
- new /obj/item/clothing/gloves/color/latex(src)
- new /obj/item/device/radio/headset/heads/rd(src)
- new /obj/item/weapon/tank/air(src)
- new /obj/item/clothing/mask/gas(src)
- new /obj/item/clothing/suit/armor/reactive/teleport(src)
- new /obj/item/device/flash(src)
- new /obj/item/device/laser_pointer(src)
- new /obj/item/weapon/door_remote/research_director(src)
+/obj/structure/closet/secure_closet/RD/New()
+ ..()
+ new /obj/item/clothing/suit/bio_suit/scientist(src)
+ new /obj/item/clothing/head/bio_hood/scientist(src)
+ new /obj/item/clothing/under/rank/research_director(src)
+ new /obj/item/clothing/suit/storage/labcoat(src)
+ new /obj/item/weapon/cartridge/rd(src)
+ new /obj/item/clothing/shoes/white(src)
+ new /obj/item/clothing/gloves/color/latex(src)
+ new /obj/item/device/radio/headset/heads/rd(src)
+ new /obj/item/weapon/tank/air(src)
+ new /obj/item/clothing/mask/gas(src)
+ new /obj/item/clothing/suit/armor/reactive/teleport(src)
+ new /obj/item/device/flash(src)
+ new /obj/item/device/laser_pointer(src)
+ new /obj/item/weapon/door_remote/research_director(src)
+
/obj/structure/closet/secure_closet/research_reagents
name = "research chemical storage closet"
@@ -83,20 +84,19 @@
icon_off = "rchemicaloff"
req_access = list(access_tox_storage)
-
- New()
- ..()
- new /obj/item/weapon/reagent_containers/glass/bottle/reagent/morphine(src)
- new /obj/item/weapon/reagent_containers/glass/bottle/reagent/morphine(src)
- new /obj/item/weapon/reagent_containers/glass/bottle/reagent/morphine(src)
- new /obj/item/weapon/reagent_containers/glass/bottle/reagent/morphine(src)
- new /obj/item/weapon/reagent_containers/glass/bottle/reagent/insulin(src)
- new /obj/item/weapon/reagent_containers/glass/bottle/reagent/insulin(src)
- new /obj/item/weapon/reagent_containers/glass/bottle/reagent/insulin(src)
- new /obj/item/weapon/reagent_containers/glass/bottle/reagent/insulin(src)
- new /obj/item/weapon/reagent_containers/glass/bottle/reagent/phenol(src)
- new /obj/item/weapon/reagent_containers/glass/bottle/reagent/ammonia(src)
- new /obj/item/weapon/reagent_containers/glass/bottle/reagent/oil(src)
- new /obj/item/weapon/reagent_containers/glass/bottle/reagent/acetone(src)
- new /obj/item/weapon/reagent_containers/glass/bottle/reagent/acid(src)
- new /obj/item/weapon/reagent_containers/glass/bottle/reagent/diethylamine(src)
\ No newline at end of file
+/obj/structure/closet/secure_closet/research_reagents/New()
+ ..()
+ new /obj/item/weapon/reagent_containers/glass/bottle/reagent/morphine(src)
+ new /obj/item/weapon/reagent_containers/glass/bottle/reagent/morphine(src)
+ new /obj/item/weapon/reagent_containers/glass/bottle/reagent/morphine(src)
+ new /obj/item/weapon/reagent_containers/glass/bottle/reagent/morphine(src)
+ new /obj/item/weapon/reagent_containers/glass/bottle/reagent/insulin(src)
+ new /obj/item/weapon/reagent_containers/glass/bottle/reagent/insulin(src)
+ new /obj/item/weapon/reagent_containers/glass/bottle/reagent/insulin(src)
+ new /obj/item/weapon/reagent_containers/glass/bottle/reagent/insulin(src)
+ new /obj/item/weapon/reagent_containers/glass/bottle/reagent/phenol(src)
+ new /obj/item/weapon/reagent_containers/glass/bottle/reagent/ammonia(src)
+ new /obj/item/weapon/reagent_containers/glass/bottle/reagent/oil(src)
+ new /obj/item/weapon/reagent_containers/glass/bottle/reagent/acetone(src)
+ new /obj/item/weapon/reagent_containers/glass/bottle/reagent/acid(src)
+ new /obj/item/weapon/reagent_containers/glass/bottle/reagent/diethylamine(src)
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 19dc1622ffe..72ef10a5cde 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
@@ -5,8 +5,8 @@
icon_state = "secure1"
density = 1
opened = 0
- var/locked = 1
- var/broken = 0
+ locked = 1
+ broken = 0
var/large = 1
icon_closed = "secure"
var/icon_locked = "secure1"
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
index ed2599e91dd..38a8fe42377 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
@@ -8,30 +8,29 @@
icon_broken = "capsecurebroken"
icon_off = "capsecureoff"
- New()
- ..()
- if(prob(50))
- new /obj/item/weapon/storage/backpack/captain(src)
- else
- new /obj/item/weapon/storage/backpack/satchel_cap(src)
- new /obj/item/weapon/book/manual/faxes(src)
- new /obj/item/weapon/storage/backpack/duffel/captain(src)
- new /obj/item/clothing/suit/captunic(src)
- new /obj/item/clothing/suit/captunic/capjacket(src)
- new /obj/item/clothing/under/captainparade(src)
- new /obj/item/clothing/head/caphat/parade(src)
- new /obj/item/clothing/under/rank/captain(src)
- new /obj/item/clothing/under/dress/dress_cap(src)
- new /obj/item/clothing/suit/armor/vest/capcarapace/alt(src)
- new /obj/item/weapon/cartridge/captain(src)
- new /obj/item/clothing/shoes/brown(src)
- new /obj/item/clothing/shoes/laceup(src)
- new /obj/item/device/radio/headset/heads/captain/alt(src)
- new /obj/item/clothing/gloves/color/captain(src)
- new /obj/item/weapon/storage/belt/rapier(src)
- new /obj/item/weapon/gun/energy/gun(src)
- new /obj/item/weapon/door_remote/captain(src)
-
+/obj/structure/closet/secure_closet/captains/New()
+ ..()
+ if(prob(50))
+ new /obj/item/weapon/storage/backpack/captain(src)
+ else
+ new /obj/item/weapon/storage/backpack/satchel_cap(src)
+ new /obj/item/weapon/book/manual/faxes(src)
+ new /obj/item/weapon/storage/backpack/duffel/captain(src)
+ new /obj/item/clothing/suit/captunic(src)
+ new /obj/item/clothing/suit/captunic/capjacket(src)
+ new /obj/item/clothing/under/captainparade(src)
+ new /obj/item/clothing/head/caphat/parade(src)
+ new /obj/item/clothing/under/rank/captain(src)
+ new /obj/item/clothing/under/dress/dress_cap(src)
+ new /obj/item/clothing/suit/armor/vest/capcarapace/alt(src)
+ new /obj/item/weapon/cartridge/captain(src)
+ new /obj/item/clothing/shoes/brown(src)
+ new /obj/item/clothing/shoes/laceup(src)
+ new /obj/item/device/radio/headset/heads/captain/alt(src)
+ new /obj/item/clothing/gloves/color/captain(src)
+ new /obj/item/weapon/storage/belt/rapier(src)
+ new /obj/item/weapon/gun/energy/gun(src)
+ new /obj/item/weapon/door_remote/captain(src)
/obj/structure/closet/secure_closet/hop
@@ -44,19 +43,20 @@
icon_broken = "hopsecurebroken"
icon_off = "hopsecureoff"
- New()
- ..()
- new /obj/item/clothing/glasses/sunglasses(src)
- new /obj/item/clothing/head/hopcap(src)
- new /obj/item/weapon/cartridge/hop(src)
- new /obj/item/device/radio/headset/heads/hop(src)
- new /obj/item/weapon/storage/box/ids(src)
- new /obj/item/weapon/storage/box/PDAs(src)
- new /obj/item/clothing/suit/armor/vest(src)
- new /obj/item/weapon/gun/energy/gun(src)
- new /obj/item/device/flash(src)
- new /obj/item/clothing/accessory/petcollar(src)
- new /obj/item/weapon/door_remote/civillian(src)
+/obj/structure/closet/secure_closet/hop/New()
+ ..()
+ new /obj/item/clothing/glasses/sunglasses(src)
+ new /obj/item/clothing/head/hopcap(src)
+ new /obj/item/weapon/cartridge/hop(src)
+ new /obj/item/device/radio/headset/heads/hop(src)
+ new /obj/item/weapon/storage/box/ids(src)
+ new /obj/item/weapon/storage/box/PDAs(src)
+ new /obj/item/clothing/suit/armor/vest(src)
+ new /obj/item/weapon/gun/energy/gun(src)
+ new /obj/item/device/flash(src)
+ new /obj/item/clothing/accessory/petcollar(src)
+ new /obj/item/weapon/door_remote/civillian(src)
+
/obj/structure/closet/secure_closet/hop2
name = "head of personnel's attire"
@@ -68,21 +68,20 @@
icon_broken = "hopsecurebroken"
icon_off = "hopsecureoff"
- New()
- ..()
- new /obj/item/clothing/under/rank/head_of_personnel(src)
- new /obj/item/clothing/under/dress/dress_hop(src)
- new /obj/item/clothing/under/dress/dress_hr(src)
- new /obj/item/clothing/under/lawyer/female(src)
- new /obj/item/clothing/under/lawyer/black(src)
- new /obj/item/clothing/under/lawyer/red(src)
- new /obj/item/clothing/under/lawyer/oldman(src)
- new /obj/item/clothing/shoes/brown(src)
- new /obj/item/clothing/shoes/black(src)
- new /obj/item/clothing/shoes/leather(src)
- new /obj/item/clothing/shoes/white(src)
- new /obj/item/clothing/under/rank/head_of_personnel_whimsy(src)
-
+/obj/structure/closet/secure_closet/hop2/New()
+ ..()
+ new /obj/item/clothing/under/rank/head_of_personnel(src)
+ new /obj/item/clothing/under/dress/dress_hop(src)
+ new /obj/item/clothing/under/dress/dress_hr(src)
+ new /obj/item/clothing/under/lawyer/female(src)
+ new /obj/item/clothing/under/lawyer/black(src)
+ new /obj/item/clothing/under/lawyer/red(src)
+ new /obj/item/clothing/under/lawyer/oldman(src)
+ new /obj/item/clothing/shoes/brown(src)
+ new /obj/item/clothing/shoes/black(src)
+ new /obj/item/clothing/shoes/leather(src)
+ new /obj/item/clothing/shoes/white(src)
+ new /obj/item/clothing/under/rank/head_of_personnel_whimsy(src)
/obj/structure/closet/secure_closet/hos
@@ -95,33 +94,32 @@
icon_broken = "hossecurebroken"
icon_off = "hossecureoff"
- New()
- ..()
- if(prob(50))
- new /obj/item/weapon/storage/backpack/security(src)
- else
- new /obj/item/weapon/storage/backpack/satchel_sec(src)
- new /obj/item/weapon/cartridge/hos(src)
- new /obj/item/device/radio/headset/heads/hos/alt(src)
- new /obj/item/clothing/under/rank/head_of_security(src)
- new /obj/item/clothing/under/rank/head_of_security/formal(src)
- new /obj/item/clothing/under/rank/head_of_security/corp(src)
- new /obj/item/clothing/under/rank/head_of_security/skirt(src)
- new /obj/item/clothing/suit/armor/hos(src)
- new /obj/item/clothing/suit/armor/hos/alt(src)
- new /obj/item/clothing/head/HoS(src)
- new /obj/item/clothing/head/HoS/beret(src)
- new /obj/item/clothing/glasses/hud/security/sunglasses(src)
- new /obj/item/weapon/storage/lockbox/mindshield(src)
- new /obj/item/weapon/storage/box/flashbangs(src)
- new /obj/item/clothing/mask/gas/sechailer/hos(src)
- new /obj/item/weapon/shield/riot/tele(src)
- new /obj/item/weapon/melee/baton/loaded(src)
- new /obj/item/weapon/storage/belt/security/sec(src)
- new /obj/item/taperoll/police(src)
- new /obj/item/weapon/gun/energy/gun/hos(src)
- new /obj/item/weapon/door_remote/head_of_security(src)
-
+/obj/structure/closet/secure_closet/hos/New()
+ ..()
+ if(prob(50))
+ new /obj/item/weapon/storage/backpack/security(src)
+ else
+ new /obj/item/weapon/storage/backpack/satchel_sec(src)
+ new /obj/item/weapon/cartridge/hos(src)
+ new /obj/item/device/radio/headset/heads/hos/alt(src)
+ new /obj/item/clothing/under/rank/head_of_security(src)
+ new /obj/item/clothing/under/rank/head_of_security/formal(src)
+ new /obj/item/clothing/under/rank/head_of_security/corp(src)
+ new /obj/item/clothing/under/rank/head_of_security/skirt(src)
+ new /obj/item/clothing/suit/armor/hos(src)
+ new /obj/item/clothing/suit/armor/hos/alt(src)
+ new /obj/item/clothing/head/HoS(src)
+ new /obj/item/clothing/head/HoS/beret(src)
+ new /obj/item/clothing/glasses/hud/security/sunglasses(src)
+ new /obj/item/weapon/storage/lockbox/mindshield(src)
+ new /obj/item/weapon/storage/box/flashbangs(src)
+ new /obj/item/clothing/mask/gas/sechailer/hos(src)
+ new /obj/item/weapon/shield/riot/tele(src)
+ new /obj/item/weapon/melee/baton/loaded(src)
+ new /obj/item/weapon/storage/belt/security/sec(src)
+ new /obj/item/taperoll/police(src)
+ new /obj/item/weapon/gun/energy/gun/hos(src)
+ new /obj/item/weapon/door_remote/head_of_security(src)
/obj/structure/closet/secure_closet/warden
@@ -134,34 +132,32 @@
icon_broken = "wardensecurebroken"
icon_off = "wardensecureoff"
-
- New()
- ..()
- if(prob(50))
- new /obj/item/weapon/storage/backpack/security(src)
- else
- new /obj/item/weapon/storage/backpack/satchel_sec(src)
- new /obj/item/device/radio/headset/headset_sec/alt(src)
- new /obj/item/clothing/suit/armor/vest/warden(src)
- new /obj/item/clothing/head/warden(src)
- new /obj/item/clothing/suit/armor/vest/warden/alt(src)
- new /obj/item/clothing/head/beret/sec/warden(src)
- new /obj/item/clothing/under/rank/warden(src)
- new /obj/item/clothing/under/rank/warden/formal(src)
- new /obj/item/clothing/under/rank/warden/corp(src)
- new /obj/item/clothing/under/rank/warden/skirt(src)
- new /obj/item/clothing/glasses/hud/security/sunglasses(src)
- new /obj/item/clothing/mask/gas/sechailer/warden(src)
- new /obj/item/taperoll/police(src)
- new /obj/item/weapon/storage/box/zipties(src)
- new /obj/item/weapon/storage/box/flashbangs(src)
- new /obj/item/weapon/reagent_containers/spray/pepper(src)
- new /obj/item/weapon/melee/baton/loaded(src)
- new /obj/item/weapon/gun/energy/gun/advtaser(src)
- new /obj/item/weapon/storage/belt/security/sec(src)
- new /obj/item/weapon/storage/box/holobadge(src)
- new /obj/item/clothing/gloves/color/black/krav_maga/sec(src)
-
+/obj/structure/closet/secure_closet/warden/New()
+ ..()
+ if(prob(50))
+ new /obj/item/weapon/storage/backpack/security(src)
+ else
+ new /obj/item/weapon/storage/backpack/satchel_sec(src)
+ new /obj/item/device/radio/headset/headset_sec/alt(src)
+ new /obj/item/clothing/suit/armor/vest/warden(src)
+ new /obj/item/clothing/head/warden(src)
+ new /obj/item/clothing/suit/armor/vest/warden/alt(src)
+ new /obj/item/clothing/head/beret/sec/warden(src)
+ new /obj/item/clothing/under/rank/warden(src)
+ new /obj/item/clothing/under/rank/warden/formal(src)
+ new /obj/item/clothing/under/rank/warden/corp(src)
+ new /obj/item/clothing/under/rank/warden/skirt(src)
+ new /obj/item/clothing/glasses/hud/security/sunglasses(src)
+ new /obj/item/clothing/mask/gas/sechailer/warden(src)
+ new /obj/item/taperoll/police(src)
+ new /obj/item/weapon/storage/box/zipties(src)
+ new /obj/item/weapon/storage/box/flashbangs(src)
+ new /obj/item/weapon/reagent_containers/spray/pepper(src)
+ new /obj/item/weapon/melee/baton/loaded(src)
+ new /obj/item/weapon/gun/energy/gun/advtaser(src)
+ new /obj/item/weapon/storage/belt/security/sec(src)
+ new /obj/item/weapon/storage/box/holobadge(src)
+ new /obj/item/clothing/gloves/color/black/krav_maga/sec(src)
/obj/structure/closet/secure_closet/security
@@ -174,24 +170,25 @@
icon_broken = "secbroken"
icon_off = "secoff"
- New()
- ..()
- if(prob(50))
- new /obj/item/weapon/storage/backpack/security(src)
- else
- new /obj/item/weapon/storage/backpack/satchel_sec(src)
- new /obj/item/clothing/suit/armor/vest/security(src)
- new /obj/item/device/radio/headset/headset_sec/alt(src)
- new /obj/item/clothing/head/soft/sec(src)
- new /obj/item/weapon/reagent_containers/spray/pepper(src)
- new /obj/item/device/flash(src)
- new /obj/item/weapon/grenade/flashbang(src)
- new /obj/item/weapon/storage/belt/security/sec(src)
- new /obj/item/clothing/mask/gas/sechailer(src)
- new /obj/item/clothing/glasses/hud/security/sunglasses(src)
- new /obj/item/clothing/head/helmet(src)
- new /obj/item/weapon/melee/baton/loaded(src)
- new /obj/item/taperoll/police(src)
+/obj/structure/closet/secure_closet/security/New()
+ ..()
+ if(prob(50))
+ new /obj/item/weapon/storage/backpack/security(src)
+ else
+ new /obj/item/weapon/storage/backpack/satchel_sec(src)
+ new /obj/item/clothing/suit/armor/vest/security(src)
+ new /obj/item/device/radio/headset/headset_sec/alt(src)
+ new /obj/item/clothing/head/soft/sec(src)
+ new /obj/item/weapon/reagent_containers/spray/pepper(src)
+ new /obj/item/device/flash(src)
+ new /obj/item/weapon/grenade/flashbang(src)
+ new /obj/item/weapon/storage/belt/security/sec(src)
+ new /obj/item/clothing/mask/gas/sechailer(src)
+ new /obj/item/clothing/glasses/hud/security/sunglasses(src)
+ new /obj/item/clothing/head/helmet(src)
+ new /obj/item/weapon/melee/baton/loaded(src)
+ new /obj/item/taperoll/police(src)
+
/obj/structure/closet/secure_closet/brigdoc
name = "brig physician's locker"
@@ -203,24 +200,25 @@
icon_broken = "securemedbroken"
icon_off = "securemedoff"
- New()
- ..()
- if(prob(50))
- new /obj/item/weapon/storage/backpack/medic(src)
- else
- new /obj/item/weapon/storage/backpack/satchel_med(src)
- new /obj/item/weapon/reagent_containers/spray/pepper(src)
- new /obj/item/device/flash(src)
- new /obj/item/weapon/storage/firstaid/regular(src)
- new /obj/item/weapon/storage/firstaid/fire(src)
- new /obj/item/weapon/storage/firstaid/adv(src)
- new /obj/item/weapon/storage/firstaid/o2(src)
- new /obj/item/weapon/storage/firstaid/toxin(src)
- new /obj/item/clothing/suit/storage/brigdoc(src)
- new /obj/item/clothing/under/rank/security/brigphys(src)
- new /obj/item/clothing/shoes/white(src)
- new /obj/item/device/radio/headset/headset_sec/alt(src)
- new /obj/item/clothing/shoes/sandal/white(src)
+/obj/structure/closet/secure_closet/brigdoc/New()
+ ..()
+ if(prob(50))
+ new /obj/item/weapon/storage/backpack/medic(src)
+ else
+ new /obj/item/weapon/storage/backpack/satchel_med(src)
+ new /obj/item/weapon/reagent_containers/spray/pepper(src)
+ new /obj/item/device/flash(src)
+ new /obj/item/weapon/storage/firstaid/regular(src)
+ new /obj/item/weapon/storage/firstaid/fire(src)
+ new /obj/item/weapon/storage/firstaid/adv(src)
+ new /obj/item/weapon/storage/firstaid/o2(src)
+ new /obj/item/weapon/storage/firstaid/toxin(src)
+ new /obj/item/clothing/suit/storage/brigdoc(src)
+ new /obj/item/clothing/under/rank/security/brigphys(src)
+ new /obj/item/clothing/shoes/white(src)
+ new /obj/item/device/radio/headset/headset_sec/alt(src)
+ new /obj/item/clothing/shoes/sandal/white(src)
+
/obj/structure/closet/secure_closet/blueshield
name = "blueshield's locker"
@@ -232,25 +230,26 @@
icon_broken = "bssecurebroken"
icon_off = "bssecureoff"
- New()
- ..()
- new /obj/item/weapon/storage/briefcase(src)
- new /obj/item/weapon/storage/firstaid/adv(src)
- new /obj/item/weapon/storage/belt/security/sec(src)
- new /obj/item/weapon/grenade/flashbang(src)
- new /obj/item/device/flash(src)
- new /obj/item/weapon/restraints/handcuffs(src)
- new /obj/item/weapon/melee/baton/loaded(src)
- new /obj/item/clothing/glasses/sunglasses(src)
- new /obj/item/clothing/glasses/hud/health/health_advanced
- new /obj/item/clothing/head/beret/centcom/officer(src)
- new /obj/item/clothing/head/beret/centcom/officer/navy(src)
- new /obj/item/clothing/suit/armor/vest/blueshield(src)
- new /obj/item/clothing/suit/storage/blueshield(src)
- new /obj/item/clothing/shoes/centcom(src)
- new /obj/item/clothing/accessory/holster(src)
- new /obj/item/clothing/accessory/blue(src)
- new /obj/item/clothing/shoes/jackboots/jacksandals(src)
+/obj/structure/closet/secure_closet/blueshield/New()
+ ..()
+ new /obj/item/weapon/storage/briefcase(src)
+ new /obj/item/weapon/storage/firstaid/adv(src)
+ new /obj/item/weapon/storage/belt/security/sec(src)
+ new /obj/item/weapon/grenade/flashbang(src)
+ new /obj/item/device/flash(src)
+ new /obj/item/weapon/restraints/handcuffs(src)
+ new /obj/item/weapon/melee/baton/loaded(src)
+ new /obj/item/clothing/glasses/sunglasses(src)
+ new /obj/item/clothing/glasses/hud/health/health_advanced
+ new /obj/item/clothing/head/beret/centcom/officer(src)
+ new /obj/item/clothing/head/beret/centcom/officer/navy(src)
+ new /obj/item/clothing/suit/armor/vest/blueshield(src)
+ new /obj/item/clothing/suit/storage/blueshield(src)
+ new /obj/item/clothing/shoes/centcom(src)
+ new /obj/item/clothing/accessory/holster(src)
+ new /obj/item/clothing/accessory/blue(src)
+ new /obj/item/clothing/shoes/jackboots/jacksandals(src)
+
/obj/structure/closet/secure_closet/ntrep
name = "\improper Nanotrasen Representative's locker"
@@ -262,51 +261,54 @@
icon_broken = "ntsecurebroken"
icon_off = "ntsecureoff"
- New()
- ..()
- new /obj/item/weapon/book/manual/faxes(src)
- new /obj/item/weapon/storage/briefcase(src)
- new /obj/item/device/paicard(src)
- new /obj/item/device/flash(src)
- new /obj/item/clothing/glasses/sunglasses(src)
- new /obj/item/clothing/gloves/color/white(src)
- new /obj/item/clothing/shoes/centcom(src)
- new /obj/item/clothing/under/lawyer/oldman(src)
- new /obj/item/clothing/under/lawyer/black(src)
- new /obj/item/clothing/under/lawyer/female(src)
- new /obj/item/clothing/head/ntrep(src)
- new /obj/item/clothing/shoes/sandal/fancy(src)
- new /obj/item/weapon/storage/box/tapes(src)
- new /obj/item/device/taperecorder(src)
+/obj/structure/closet/secure_closet/ntrep/New()
+ ..()
+ new /obj/item/weapon/book/manual/faxes(src)
+ new /obj/item/weapon/storage/briefcase(src)
+ new /obj/item/device/paicard(src)
+ new /obj/item/device/flash(src)
+ new /obj/item/clothing/glasses/sunglasses(src)
+ new /obj/item/clothing/gloves/color/white(src)
+ new /obj/item/clothing/shoes/centcom(src)
+ new /obj/item/clothing/under/lawyer/oldman(src)
+ new /obj/item/clothing/under/lawyer/black(src)
+ new /obj/item/clothing/under/lawyer/female(src)
+ new /obj/item/clothing/head/ntrep(src)
+ new /obj/item/clothing/shoes/sandal/fancy(src)
+ new /obj/item/weapon/storage/box/tapes(src)
+ new /obj/item/device/taperecorder(src)
/obj/structure/closet/secure_closet/security/cargo
- New()
- ..()
- new /obj/item/clothing/accessory/armband/cargo(src)
- new /obj/item/device/encryptionkey/headset_cargo(src)
+/obj/structure/closet/secure_closet/security/cargo/New()
+ ..()
+ new /obj/item/clothing/accessory/armband/cargo(src)
+ new /obj/item/device/encryptionkey/headset_cargo(src)
+
/obj/structure/closet/secure_closet/security/engine
- New()
- ..()
- new /obj/item/clothing/accessory/armband/engine(src)
- new /obj/item/device/encryptionkey/headset_eng(src)
+/obj/structure/closet/secure_closet/security/engine/New()
+ ..()
+ new /obj/item/clothing/accessory/armband/engine(src)
+ new /obj/item/device/encryptionkey/headset_eng(src)
+
/obj/structure/closet/secure_closet/security/science
- New()
- ..()
- new /obj/item/clothing/accessory/armband/science(src)
- new /obj/item/device/encryptionkey/headset_sci(src)
+/obj/structure/closet/secure_closet/security/science/New()
+ ..()
+ new /obj/item/clothing/accessory/armband/science(src)
+ new /obj/item/device/encryptionkey/headset_sci(src)
+
/obj/structure/closet/secure_closet/security/med
- New()
- ..()
- new /obj/item/clothing/accessory/armband/medgreen(src)
- new /obj/item/device/encryptionkey/headset_med(src)
+/obj/structure/closet/secure_closet/security/med/New()
+ ..()
+ new /obj/item/clothing/accessory/armband/medgreen(src)
+ new /obj/item/device/encryptionkey/headset_med(src)
/obj/structure/closet/secure_closet/detective
@@ -321,28 +323,28 @@
burn_state = FLAMMABLE
burntime = 20
- New()
- ..()
- new /obj/item/clothing/under/det(src)
- new /obj/item/clothing/suit/storage/det_suit(src)
- new /obj/item/clothing/suit/storage/det_suit/forensics/blue(src)
- new /obj/item/clothing/suit/storage/det_suit/forensics/red(src)
- new /obj/item/clothing/gloves/color/black/forensics(src)
- new /obj/item/clothing/head/det_hat(src)
- new /obj/item/clothing/shoes/brown(src)
- new /obj/item/weapon/storage/box/evidence(src)
- new /obj/item/weapon/clipboard(src)
- new /obj/item/device/radio/headset/headset_sec/alt(src)
- new /obj/item/device/detective_scanner(src)
- new /obj/item/clothing/suit/armor/vest/det_suit(src)
- new /obj/item/ammo_box/c38(src)
- new /obj/item/ammo_box/c38(src)
- new /obj/item/weapon/gun/projectile/revolver/detective(src)
- new /obj/item/taperoll/police(src)
- new /obj/item/clothing/accessory/holster/armpit(src)
- new /obj/item/clothing/glasses/sunglasses/yeah(src)
- new /obj/item/device/flashlight/seclite(src)
- new /obj/item/clothing/accessory/black(src)
+/obj/structure/closet/secure_closet/detective/New()
+ ..()
+ new /obj/item/clothing/under/det(src)
+ new /obj/item/clothing/suit/storage/det_suit(src)
+ new /obj/item/clothing/suit/storage/det_suit/forensics/blue(src)
+ new /obj/item/clothing/suit/storage/det_suit/forensics/red(src)
+ new /obj/item/clothing/gloves/color/black/forensics(src)
+ new /obj/item/clothing/head/det_hat(src)
+ new /obj/item/clothing/shoes/brown(src)
+ new /obj/item/weapon/storage/box/evidence(src)
+ new /obj/item/weapon/clipboard(src)
+ new /obj/item/device/radio/headset/headset_sec/alt(src)
+ new /obj/item/device/detective_scanner(src)
+ new /obj/item/clothing/suit/armor/vest/det_suit(src)
+ new /obj/item/ammo_box/c38(src)
+ new /obj/item/ammo_box/c38(src)
+ new /obj/item/weapon/gun/projectile/revolver/detective(src)
+ new /obj/item/taperoll/police(src)
+ new /obj/item/clothing/accessory/holster/armpit(src)
+ new /obj/item/clothing/glasses/sunglasses/yeah(src)
+ new /obj/item/device/flashlight/seclite(src)
+ new /obj/item/clothing/accessory/black(src)
/obj/structure/closet/secure_closet/detective/update_icon()
if(broken)
@@ -356,16 +358,15 @@
else
icon_state = icon_opened
+
/obj/structure/closet/secure_closet/injection
name = "lethal injections locker"
req_access = list(access_security)
-
- New()
- ..()
- new /obj/item/weapon/reagent_containers/ld50_syringe/lethal(src)
- new /obj/item/weapon/reagent_containers/ld50_syringe/lethal(src)
-
+/obj/structure/closet/secure_closet/injection/New()
+ ..()
+ new /obj/item/weapon/reagent_containers/ld50_syringe/lethal(src)
+ new /obj/item/weapon/reagent_containers/ld50_syringe/lethal(src)
/obj/structure/closet/secure_closet/brig
@@ -374,29 +375,29 @@
anchored = 1
var/id = null
- New()
- ..()
- new /obj/item/clothing/under/color/orange/prison(src)
- new /obj/item/clothing/shoes/orange(src)
- new /obj/item/weapon/card/id/prisoner/random(src)
- new /obj/item/device/radio/headset(src)
-
+/obj/structure/closet/secure_closet/brig/New()
+ ..()
+ new /obj/item/clothing/under/color/orange/prison(src)
+ new /obj/item/clothing/shoes/orange(src)
+ new /obj/item/weapon/card/id/prisoner/random(src)
+ new /obj/item/device/radio/headset(src)
/obj/structure/closet/secure_closet/courtroom
name = "courtroom locker"
req_access = list(access_court)
- New()
- ..()
- new /obj/item/clothing/shoes/brown(src)
- new /obj/item/weapon/paper/Court (src)
- new /obj/item/weapon/paper/Court (src)
- new /obj/item/weapon/paper/Court (src)
- new /obj/item/weapon/pen (src)
- new /obj/item/clothing/suit/judgerobe (src)
- new /obj/item/clothing/head/powdered_wig (src)
- new /obj/item/weapon/storage/briefcase(src)
+/obj/structure/closet/secure_closet/courtroom/New()
+ ..()
+ new /obj/item/clothing/shoes/brown(src)
+ new /obj/item/weapon/paper/Court (src)
+ new /obj/item/weapon/paper/Court (src)
+ new /obj/item/weapon/paper/Court (src)
+ new /obj/item/weapon/pen (src)
+ new /obj/item/clothing/suit/judgerobe (src)
+ new /obj/item/clothing/head/powdered_wig (src)
+ new /obj/item/weapon/storage/briefcase(src)
+
/obj/structure/closet/secure_closet/wall
name = "wall locker"
diff --git a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm
index 22b10ca1157..0b9554a4cc4 100644
--- a/code/game/objects/structures/crates_lockers/closets/wardrobe.dm
+++ b/code/game/objects/structures/crates_lockers/closets/wardrobe.dm
@@ -460,3 +460,20 @@
new /obj/item/clothing/shoes/orange(src)
new /obj/item/clothing/shoes/purple(src)
new /obj/item/clothing/shoes/leather(src)
+
+/obj/structure/closet/wardrobe/coroner
+ name = "coroner wardrobe"
+ icon_state = "black"
+ icon_closed = "black"
+
+/obj/structure/closet/wardrobe/coroner/New()
+ ..()
+ if(prob(50))
+ new /obj/item/weapon/storage/backpack/medic(src)
+ else
+ new /obj/item/weapon/storage/backpack/satchel_med(src)
+ new /obj/item/weapon/storage/backpack/duffel/medical(src)
+ new /obj/item/clothing/suit/storage/labcoat/mortician(src)
+ new /obj/item/clothing/shoes/white(src)
+ new /obj/item/clothing/under/rank/medical/mortician(src)
+ new /obj/item/clothing/head/surgery/black(src)
diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm
index 5396ac46e6b..043fdf2f9c4 100644
--- a/code/game/objects/structures/crates_lockers/crates.dm
+++ b/code/game/objects/structures/crates_lockers/crates.dm
@@ -242,8 +242,8 @@
var/greenlight = "securecrateg"
var/sparks = "securecratesparks"
var/emag = "securecrateemag"
- var/broken = 0
- var/locked = 1
+ broken = 0
+ locked = 1
health = 1000
/obj/structure/closet/crate/secure/update_icon()
@@ -443,9 +443,9 @@
anchored = TRUE
/obj/structure/closet/crate/can/attackby(obj/item/weapon/W, mob/living/user, params)
- add_fingerprint(user)
- user.changeNext_move(CLICK_CD_MELEE)
if(iswrench(W))
+ add_fingerprint(user)
+ user.changeNext_move(CLICK_CD_MELEE)
if(anchored)
playsound(loc, W.usesound, 100, 1)
user.visible_message("[user] starts loosening [src]'s floor casters.", \
@@ -469,6 +469,8 @@
user.visible_message("[user] has secured [src]'s floor casters.", \
"You have secured [src]'s floor casters.")
anchored = TRUE
+ else
+ ..()
/obj/structure/closet/crate/radiation
desc = "A crate with a radiation sign on it."
diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm
index 126dd6e3a38..3946f6613da 100644
--- a/code/game/objects/structures/window.dm
+++ b/code/game/objects/structures/window.dm
@@ -108,7 +108,7 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f
return 1
-/obj/structure/window/hitby(atom/movable/AM)
+/obj/structure/window/hitby(atom/movable/AM)
..()
var/tforce = 0
if(ismob(AM))
@@ -125,7 +125,7 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f
update_nearby_icons()
step(src, get_dir(AM, src))
if(health <= 0)
- destroy()
+ destroy()
/obj/structure/window/attack_hand(mob/user as mob)
@@ -179,14 +179,14 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f
attack_generic(user, rand(10, 15))
-/obj/structure/window/attackby(obj/item/weapon/W as obj, mob/living/user as mob, params)
- if(!istype(W)) return//I really wish I did not need this
- if(istype(W, /obj/item/weapon/grab) && get_dist(src,user)<2)
- var/obj/item/weapon/grab/G = W
+/obj/structure/window/attackby(obj/item/I as obj, mob/living/user as mob, params)
+ if(!istype(I)) return//I really wish I did not need this
+ if(istype(I, /obj/item/weapon/grab) && get_dist(src,user)<2)
+ var/obj/item/weapon/grab/G = I
if(istype(G.affecting,/mob/living))
var/mob/living/M = G.affecting
var/state = G.state
- qdel(W) //gotta delete it here because if window breaks, it won't get deleted
+ qdel(I) //gotta delete it here because if window breaks, it won't get deleted
switch(state)
if(1)
M.visible_message("[user] slams [M] against \the [src]!")
@@ -210,29 +210,29 @@ var/global/wcCommon = pick(list("#379963", "#0d8395", "#58b5c3", "#49e46e", "#8f
hit(75)
return
- if(W.flags & NOBLUDGEON) return
+ if(I.flags & NOBLUDGEON) return
- if(istype(W, /obj/item/weapon/screwdriver))
+ if(istype(I, /obj/item/weapon/screwdriver))
if(reinf && state >= 1)
state = 3 - state
- playsound(loc, W.usesound, 75, 1)
+ playsound(loc, I.usesound, 75, 1)
to_chat(user, (state == 1 ? "You have unfastened the window from the frame." : "You have fastened the window to the frame."))
else if(reinf && state == 0)
anchored = !anchored
update_nearby_icons()
- playsound(loc, W.usesound, 75, 1)
+ playsound(loc, I.usesound, 75, 1)
to_chat(user, (anchored ? "You have fastened the frame to the floor." : "You have unfastened the frame from the floor."))
else if(!reinf)
anchored = !anchored
update_nearby_icons()
- playsound(loc, W.usesound, 75, 1)
+ playsound(loc, I.usesound, 75, 1)
to_chat(user, (anchored ? "You have fastened the window to the floor." : "You have unfastened the window."))
- else if(istype(W, /obj/item/weapon/crowbar) && reinf && state <= 1)
+ else if(istype(I, /obj/item/weapon/crowbar) && reinf && state <= 1)
state = 1 - state
- playsound(loc, W.usesound, 75, 1)
+ playsound(loc, I.usesound, 75, 1)
to_chat(user, (state ? "You have pried the window into the frame." : "You have pried the window out of the frame."))
- else if(istype(W, /obj/item/weapon/wrench) && !anchored && health > 7) //Disassemble deconstructed window into parts
- playsound(src.loc, W.usesound, 50, 1)
+ else if(istype(I, /obj/item/weapon/wrench) && !anchored && health > 7) //Disassemble deconstructed window into parts
+ playsound(src.loc, I.usesound, 50, 1)
for(var/i=0;iA custom event is taking place. OOC Info:")
to_chat(src, "[html_encode(custom_event_msg)]")
to_chat(src, "
")
+
+//admin event info to be view by admins
+
+/client/proc/cmd_admin_custom_event_info()
+ set category = "Event"
+ set name = "Change Custom Admin Event Info"
+
+ if(!check_rights(R_EVENT))
+ to_chat(src, "Only administrators may use this command.")
+ return
+
+ var/input = input(usr, "Enter the description of the custom event. This is informations for admins only. Use it to notify other admins of event info but not players.", "Custom Event Info", custom_event_msg) as message|null
+ if(!input || input == "")
+ custom_event_admin_msg = null
+ log_admin("[key_name(usr)] has cleared the custom admin event info text.")
+ message_admins("[key_name_admin(usr)] has cleared the custom admin event text.")
+ return
+
+ log_admin("[key_name(usr)] has changed the custom admin event info text.")
+ message_admins("[key_name_admin(usr)] has changed the custom admin event info text.")
+
+ custom_event_admin_msg = input
+
+ for(var/client/X in admins)
+ if(check_rights(R_EVENT,0,X.mob))
+ to_chat(X, "Custom Admin Event Info
")
+ to_chat(X, "A custom event is starting. OOC Admin Info:
")
+ to_chat(X, "[html_encode(custom_event_admin_msg)]")
+ to_chat(X,"
")
+
+/client/proc/cmd_view_custom_event_info()
+ set category = "Event"
+ set name = "Custom Event Admin Info"
+
+ if(!check_rights(R_EVENT))
+ to_chat(src, "Only administrators may use this command.")
+ return
+
+ if(!custom_event_admin_msg || custom_event_admin_msg == "")
+ to_chat(src, "There currently is no known custom admin event taking place.")
+ return
+
+ to_chat(src, "Custom Event Info
")
+ to_chat(src, "A custom event is taking place. OOC Info:
")
+ to_chat(src, "[html_encode(custom_event_admin_msg)]")
+ to_chat(src, "
")
diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm
index ccae0db2988..84f95096078 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -61,7 +61,7 @@
if(usr)
if(usr.client)
if(usr.client.holder)
- to_chat(M, "old You hear a voice in your head... [msg]")
+ to_chat(M, "You hear a voice in your head... [msg]")
log_admin("SubtlePM: [key_name(usr)] -> [key_name(M)] : [msg]")
message_admins("SubtleMessage: [key_name_admin(usr)] -> [key_name_admin(M)] : [msg]", 1)
diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm
index 00402f2deb6..2720f8086d0 100644
--- a/code/modules/client/client procs.dm
+++ b/code/modules/client/client procs.dm
@@ -436,6 +436,8 @@
on_holder_add()
add_admin_verbs()
admin_memo_output("Show", 0, 1)
+ if(custom_event_admin_msg && custom_event_admin_msg != "" && check_rights(R_EVENT))
+ cmd_view_custom_event_info()
// Forcibly enable hardware-accelerated graphics, as we need them for the lighting overlays.
// (but turn them off first, since sometimes BYOND doesn't turn them on properly otherwise)
diff --git a/code/modules/events/alien_infestation.dm b/code/modules/events/alien_infestation.dm
index ed8b8d52ccd..288fbe3f809 100644
--- a/code/modules/events/alien_infestation.dm
+++ b/code/modules/events/alien_infestation.dm
@@ -1,12 +1,10 @@
/datum/event/alien_infestation
announceWhen = 400
- var/spawncount = 1
+ var/spawncount = 2
var/successSpawn = 0 //So we don't make a command report if nothing gets spawned.
/datum/event/alien_infestation/setup()
announceWhen = rand(announceWhen, announceWhen + 50)
- if(prob(50))
- spawncount++
/datum/event/alien_infestation/announce()
if(successSpawn)
diff --git a/code/modules/food_and_drinks/drinks/bottler/bottler.dm b/code/modules/food_and_drinks/drinks/bottler/bottler.dm
index 7b97e22f142..87d92615be0 100644
--- a/code/modules/food_and_drinks/drinks/bottler/bottler.dm
+++ b/code/modules/food_and_drinks/drinks/bottler/bottler.dm
@@ -286,7 +286,7 @@
drink_container.desc = "[recipe_to_use.description]"
flick("bottler_on", src)
spawn(45)
- QDEL_LIST_ASSOC_VAL(slots)
+ resetSlots()
bottling = 0
drink_container.forceMove(loc)
updateUsrDialog()
@@ -405,3 +405,7 @@
icon_state = "bottler_on"
else
icon_state = "bottler_off"
+
+/obj/machinery/bottler/proc/resetSlots()
+ QDEL_LIST_ASSOC_VAL(slots)
+ slots.len = 3
\ No newline at end of file
diff --git a/code/modules/hydroponics/beekeeping/beebox.dm b/code/modules/hydroponics/beekeeping/beebox.dm
index 7bfa00d35c3..3b21cef533e 100644
--- a/code/modules/hydroponics/beekeeping/beebox.dm
+++ b/code/modules/hydroponics/beekeeping/beebox.dm
@@ -71,8 +71,7 @@
var/datum/reagent/R = null
if(random_reagent)
- R = pick(subtypesof(/datum/reagent))
- R = chemical_reagents_list[initial(R.id)]
+ R = get_random_reagent_id()
queen_bee = new(src)
queen_bee.beehome = src
@@ -89,13 +88,12 @@
B.beehome = src
B.assign_reagent(R)
-
/obj/structure/beebox/premade/random
random_reagent = TRUE
/obj/structure/beebox/process()
- if(queen_bee)
+ if(queen_bee && (!queen_bee.beegent || !queen_bee.beegent.can_synth))
if(bee_resources >= BEE_RESOURCE_HONEYCOMB_COST)
if(honeycombs.len < get_max_honeycomb())
bee_resources = max(bee_resources-BEE_RESOURCE_HONEYCOMB_COST, 0)
@@ -172,11 +170,13 @@
var/obj/item/queen_bee/qb = I
user.unEquip(qb)
-
- qb.queen.forceMove(src)
- bees += qb.queen
- queen_bee = qb.queen
- qb.queen = null
+ if(!qb.queen.beegent || (qb.queen.beegent && qb.queen.beegent.can_synth))
+ qb.queen.forceMove(src)
+ bees += qb.queen
+ queen_bee = qb.queen
+ qb.queen = null
+ else
+ visible_message("The [qb] refuses to settle down. Maybe it's something to do with its reagent?")
if(queen_bee)
visible_message("[user] sets [qb] down inside the apiary, making it their new home.")
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index f89b4f6377c..5079f290240 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -68,6 +68,7 @@ var/list/robot_verbs_default = list(
var/lockcharge //Used when locking down a borg to preserve cell charge
var/speed = 0 //Cause sec borgs gotta go fast //No they dont!
var/scrambledcodes = 0 // Used to determine if a borg shows up on the robotics console. Setting to one hides them.
+ var/pdahide = 0 //Used to hide the borg from the messenger list
var/tracking_entities = 0 //The number of known entities currently accessing the internal camera
var/braintype = "Cyborg"
var/base_icon = ""
@@ -193,6 +194,7 @@ var/list/robot_verbs_default = list(
return 1
+
/mob/living/silicon/robot/proc/get_default_name(var/prefix as text)
if(prefix)
modtype = prefix
@@ -226,10 +228,12 @@ var/list/robot_verbs_default = list(
if(!rbPDA)
rbPDA = new(src)
rbPDA.set_name_and_job(real_name, braintype)
- if(scrambledcodes)
- var/datum/data/pda/app/messenger/M = rbPDA.find_program(/datum/data/pda/app/messenger)
- if(M)
+ var/datum/data/pda/app/messenger/M = rbPDA.find_program(/datum/data/pda/app/messenger)
+ if(M)
+ if(scrambledcodes)
M.hidden = 1
+ if(pdahide)
+ M.toff = 1
/mob/living/silicon/robot/binarycheck()
if(is_component_functioning("comms"))
@@ -390,7 +394,7 @@ var/list/robot_verbs_default = list(
module.add_subsystems_and_actions(src)
//Custom_sprite check and entry
- if(custom_sprite == 1)
+ if(custom_sprite && check_sprite("[ckey]-[modtype]"))
module_sprites["Custom"] = "[src.ckey]-[modtype]"
hands.icon_state = lowertext(module.module_type)
@@ -489,7 +493,7 @@ var/list/robot_verbs_default = list(
toggle_ionpulse()
return
- cell.charge -= 50 // 500 steps on a default cell.
+ cell.charge -= 25 // 500 steps on a default cell.
return 1
/mob/living/silicon/robot/proc/toggle_ionpulse()
@@ -1332,6 +1336,7 @@ var/list/robot_verbs_default = list(
icon_state = "nano_bloodhound"
lawupdate = 0
scrambledcodes = 1
+ pdahide = 1
modtype = "Commando"
faction = list("nanotrasen")
designation = "Nanotrasen Combat"
@@ -1380,6 +1385,7 @@ var/list/robot_verbs_default = list(
icon_state = "syndie_bloodhound"
lawupdate = 0
scrambledcodes = 1
+ pdahide = 1
faction = list("syndicate")
designation = "Syndicate Assault"
modtype = "Syndicate"
@@ -1483,3 +1489,10 @@ var/list/robot_verbs_default = list(
borked_part.wrapped = new borked_part.external_type
borked_part.heal_damage(brute,burn)
borked_part.install()
+
+/mob/living/silicon/robot/proc/check_sprite(spritename)
+ . = FALSE
+
+ var/static/all_borg_icon_states = icon_states('icons/mob/custom_synthetic/custom-synthetic.dmi')
+ if(spritename in all_borg_icon_states)
+ . = TRUE
diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm
index 3ea36bcc2cc..40b2dc832ba 100644
--- a/code/modules/mob/living/simple_animal/bot/mulebot.dm
+++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm
@@ -681,11 +681,12 @@
if(istype(M,/mob/living/silicon/robot))
visible_message("[src] bumps into [M]!")
else
- add_logs(src, M, "knocked down")
- visible_message("[src] knocks over [M]!")
- M.stop_pulling()
- M.Stun(8)
- M.Weaken(5)
+ if(!paicard)
+ add_logs(src, M, "knocked down")
+ visible_message("[src] knocks over [M]!")
+ M.stop_pulling()
+ M.Stun(8)
+ M.Weaken(5)
return ..()
/mob/living/simple_animal/bot/mulebot/proc/RunOver(mob/living/carbon/human/H)
diff --git a/code/modules/mob/living/simple_animal/hostile/bees.dm b/code/modules/mob/living/simple_animal/hostile/bees.dm
index ffd354961ef..a2d6c915d77 100644
--- a/code/modules/mob/living/simple_animal/hostile/bees.dm
+++ b/code/modules/mob/living/simple_animal/hostile/bees.dm
@@ -127,9 +127,6 @@
return 1
return 0
-
-
-
//Botany Worker Bees
/mob/living/simple_animal/hostile/poison/bees/worker
//Blank type define in case we need to give them special stuff later, plus organization (currently they are same as base type bee)
@@ -253,6 +250,9 @@
if(S.reagents.has_reagent("royal_bee_jelly")) //checked twice, because I really don't want royal bee jelly to be duped
if(S.reagents.has_reagent("royal_bee_jelly",5))
S.reagents.remove_reagent("royal_bee_jelly", 5)
+ if(!queen.beegent.can_synth)
+ to_chat(user, "You inject [src] with the royal bee jelly. It's ineffective! Maybe it's something to do with the [src] reagent.")
+ return
var/obj/item/queen_bee/qb = new(get_turf(user))
qb.queen = new(qb)
if(queen && queen.beegent)
diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/ghost.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/ghost.dm
index d5e70b27b7e..2124a31078c 100644
--- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/ghost.dm
+++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/ghost.dm
@@ -16,6 +16,8 @@
humanize_prompt += " Role: [spider_role_summary]"
if(user.ckey in ts_ckey_blacklist)
error_on_humanize = "You are not able to control any terror spider this round."
+ else if(user.has_enabled_antagHUD == 1 && config.antag_hud_restricted)
+ error_on_humanize = "You have enabled antag HUD and are unable to re-enter the round."
else if(spider_awaymission)
error_on_humanize = "Terror spiders that are part of an away mission cannot be controlled by ghosts."
else if(!ai_playercontrol_allowtype)
diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm
index 70be5b747c1..2fe6411a445 100644
--- a/code/modules/power/port_gen.dm
+++ b/code/modules/power/port_gen.dm
@@ -3,7 +3,7 @@
name = "Placeholder Generator" //seriously, don't use this. It can't be anchored without VV magic.
desc = "A portable generator for emergency backup power"
icon = 'icons/obj/power.dmi'
- icon_state = "portgen0"
+ icon_state = "portgen0_0"
density = 1
anchored = 0
use_power = 0
@@ -13,6 +13,7 @@
var/open = 0
var/recent_fault = 0
var/power_output = 1
+ var/base_icon = "portgen0"
/obj/machinery/power/port_gen/proc/IsBroken()
return (stat & (BROKEN|EMPED))
@@ -29,14 +30,17 @@
/obj/machinery/power/port_gen/proc/handleInactive()
return
+/obj/machinery/power/port_gen/update_icon()
+ icon_state = "[base_icon]_[active]"
+
/obj/machinery/power/port_gen/process()
if(active && HasFuel() && !IsBroken() && anchored && powernet)
add_avail(power_gen * power_output)
UseFuel()
else
active = 0
- icon_state = initial(icon_state)
handleInactive()
+ update_icon()
/obj/machinery/power/powered()
return 1 //doesn't require an external power source
@@ -362,11 +366,11 @@
if(href_list["action"] == "enable")
if(!active && HasFuel() && !IsBroken())
active = 1
- icon_state = "portgen1"
+ update_icon()
if(href_list["action"] == "disable")
if(active)
active = 0
- icon_state = "portgen0"
+ update_icon()
if(href_list["action"] == "eject")
if(!active)
DropFuel()
@@ -382,7 +386,8 @@
/obj/machinery/power/port_gen/pacman/super
name = "S.U.P.E.R.P.A.C.M.A.N.-type Portable Generator"
desc = "A power generator that utilizes uranium sheets as fuel. Can run for much longer than the standard PACMAN type generators. Rated for 80 kW max safe output."
- icon_state = "portgen1"
+ icon_state = "portgen1_0"
+ base_icon = "portgen1"
sheet_path = /obj/item/stack/sheet/mineral/uranium
sheet_name = "Uranium Sheets"
time_per_sheet = 576 //same power output, but a 50 sheet stack will last 2 hours at max safe power
@@ -420,7 +425,8 @@
/obj/machinery/power/port_gen/pacman/mrs
name = "M.R.S.P.A.C.M.A.N.-type Portable Generator"
desc = "An advanced power generator that runs on diamonds. Rated for 200 kW maximum safe output!"
- icon_state = "portgen2"
+ icon_state = "portgen2_0"
+ base_icon = "portgen2"
sheet_path = /obj/item/stack/sheet/mineral/diamond
sheet_name = "Diamond Sheets"
diff --git a/code/modules/projectiles/ammunition/energy.dm b/code/modules/projectiles/ammunition/energy.dm
index cdb0e063184..da9a2cf16f2 100644
--- a/code/modules/projectiles/ammunition/energy.dm
+++ b/code/modules/projectiles/ammunition/energy.dm
@@ -11,6 +11,9 @@
projectile_type = /obj/item/projectile/beam/laser
select_name = "kill"
+/obj/item/ammo_casing/energy/laser/cyborg //to balance cyborg energy cost seperately
+ e_cost = 250
+
/obj/item/ammo_casing/energy/lasergun
projectile_type = /obj/item/projectile/beam/laser
e_cost = 83
@@ -126,6 +129,9 @@
e_cost = 50
fire_sound = 'sound/weapons/taser2.ogg'
+/obj/item/ammo_casing/energy/disabler/cyborg //seperate balancing for cyborg, again
+ e_cost = 250
+
/obj/item/ammo_casing/energy/plasma
projectile_type = /obj/item/projectile/plasma
select_name = "plasma burst"
diff --git a/code/modules/projectiles/ammunition/magazines.dm b/code/modules/projectiles/ammunition/magazines.dm
index 2b736f8b1a4..6ad60248a28 100644
--- a/code/modules/projectiles/ammunition/magazines.dm
+++ b/code/modules/projectiles/ammunition/magazines.dm
@@ -182,16 +182,19 @@
/obj/item/ammo_box/magazine/m10mm/fire
name = "pistol magazine (10mm incendiary)"
+ icon_state = "9x19pI"
desc = "A gun magazine. Loaded with rounds which ignite the target."
ammo_type = /obj/item/ammo_casing/c10mm/fire
/obj/item/ammo_box/magazine/m10mm/hp
name = "pistol magazine (10mm HP)"
+ icon_state = "9x19pH"
desc= "A gun magazine. Loaded with hollow-point rounds, extremely effective against unarmored targets, but nearly useless against protective clothing."
ammo_type = /obj/item/ammo_casing/c10mm/hp
/obj/item/ammo_box/magazine/m10mm/ap
name = "pistol magazine (10mm AP)"
+ icon_state = "9x19pA"
desc= "A gun magazine. Loaded with rounds which penetrate armour, but are less effective against normal targets"
ammo_type = /obj/item/ammo_casing/c10mm/ap
diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm
index 7a039ca29df..b26418b4c45 100644
--- a/code/modules/projectiles/guns/energy/laser.dm
+++ b/code/modules/projectiles/guns/energy/laser.dm
@@ -46,6 +46,7 @@
/obj/item/weapon/gun/energy/laser/cyborg
can_charge = 0
desc = "An energy-based laser gun that draws power from the cyborg's internal energy cell directly. So this is what freedom looks like?"
+ ammo_type = list(/obj/item/ammo_casing/energy/laser/cyborg)
origin_tech = null
/obj/item/weapon/gun/energy/laser/cyborg/newshot()
diff --git a/code/modules/projectiles/guns/energy/stun.dm b/code/modules/projectiles/guns/energy/stun.dm
index 2113a2c1b81..b1cd137ee43 100644
--- a/code/modules/projectiles/guns/energy/stun.dm
+++ b/code/modules/projectiles/guns/energy/stun.dm
@@ -52,6 +52,7 @@
/obj/item/weapon/gun/energy/disabler/cyborg
name = "cyborg disabler"
desc = "An integrated disabler that draws from a cyborg's power cell. This weapon contains a limiter to prevent the cyborg's power cell from overheating."
+ ammo_type = list(/obj/item/ammo_casing/energy/disabler/cyborg)
can_charge = 0
/obj/item/weapon/gun/energy/disabler/cyborg/newshot()
diff --git a/code/modules/reagents/reagent_containers/borghydro.dm b/code/modules/reagents/reagent_containers/borghydro.dm
index 0ae8bba3008..4377b2eebfc 100644
--- a/code/modules/reagents/reagent_containers/borghydro.dm
+++ b/code/modules/reagents/reagent_containers/borghydro.dm
@@ -15,8 +15,8 @@
var/bypass_protection = 0 //If the hypospray can go through armor or thick material
var/list/datum/reagents/reagent_list = list()
- var/list/reagent_ids = list("salglu_solution", "epinephrine", "spaceacillin", "charcoal")
- //var/list/reagent_ids = list("salbutamol", "silver_sulfadiazine", "styptic_powder", "charcoal", "epinephrine", "spaceacillin")
+ var/list/reagent_ids = list("salglu_solution", "epinephrine", "spaceacillin", "charcoal", "hydrocodone")
+ //var/list/reagent_ids = list("salbutamol", "silver_sulfadiazine", "styptic_powder", "charcoal", "epinephrine", "spaceacillin", "hydrocodone")
/obj/item/weapon/reagent_containers/borghypo/surgeon
reagent_ids = list("styptic_powder", "epinephrine", "salbutamol")
@@ -127,4 +127,4 @@
empty = 0
if(empty)
- to_chat(user, "It is currently empty. Allow some time for the internal syntheszier to produce more.")
\ No newline at end of file
+ to_chat(user, "It is currently empty. Allow some time for the internal syntheszier to produce more.")
diff --git a/html/changelog.html b/html/changelog.html
index a96ba9290cb..0cfa95bec48 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -56,6 +56,114 @@
-->
+
11 October 2017
+
Anasari updated:
+
+ - Slot machine no longer earn money on average. Bet changed to 100.
+ - All items can be used to smash windows instead of only those defined as weapons. (e.g. including guitar & flashlight)
+ - Mulebot with pAI cannot knock people down anymore.
+
+
Birdtalon updated:
+
+ - Terror spiders now respect antagHUD respawn restrictions.
+
+
Kyep updated:
+
+ - mindslaving an antagbanned player now offers control of their mob to ghosts.
+
+
TullyBurnalot updated:
+
+ - Can now place garbage in garbage cans without standing on top of them.
+
+
scrubmcnoob updated:
+
+ - Cult must use teleport tailsman in active hands.
+
+
uraniummeltdown updated:
+
+ - New PACMAN portable generator sprites
+
+
+
10 October 2017
+
Birdtalon updated:
+
+ - Bees with no reagent will now work.
+
+
+
07 October 2017
+
Birdtalon updated:
+
+ - User interface tweaks to Brig timers.
+ - Seconds converted to minutes and seconds in Brig radio and security console printouts.
+ - Bees can no longer reproduce un-synthable reagents.
+
+
imsxz updated:
+
+ - Aliens now always spawn as a pair when their infestation event begins.
+
+
scrubmcnoob updated:
+
+ - Abductors can no longer use megaphones.
+
+
uraniummeltdown updated:
+
+ - Adds new sprites to the unused and used eldritch whetstones. Sprites by Fury McFlurry.
+ - Air tanks now have their own sprite, no longer looking like oxygen tanks
+ - 10mm alt magazines have their own sprites
+
+
+
06 October 2017
+
Birdtalon updated:
+
+ - Bottler doesn't break after one use.
+
+
+
05 October 2017
+
Birdtalon updated:
+
+ - Re-adds missing light switch to robotics.
+
+
+
02 October 2017
+
Imsxz updated:
+
+ - Rapid re-hatch no longer kills shadowlings.
+ - Vampires can no longer enthrall chaplains
+
+
+
30 September 2017
+
Jovaniph updated:
+
+ - Coroner now has their own locker in the morgue.
+
+
Landerlow updated:
+
+ - Adds hydrocodone to the Cyborg Hypospray
+
+
+
29 September 2017
+
Citinited updated:
+
+ - Telescreens and entertainment consoles now have 'off' and 'broken' sprites.
+ - Wooden TVs, engineering camera consoles, mining camera consoles, telescreens, and entertainment consoles now have their own circuit boards and can be reconstructed!
+ - Using a multitool on a telescreen or entertainment monitor will now allow you to reposition it.
+
+
imsxz updated:
+
+ - Subtle messages no longer begin with "old"
+
+
+
28 September 2017
+
MarsM0nd updated:
+
+ - Stops the electrified arm from combat and stunbaton implant from runtiming.
+
+
uraniummeltdown updated:
+
+ - Changelings have a new power, Biodegrade, for 2 evolution points. For 30 chemicals you can vomit acid onto restraints, welded/locked lockers and spider cocoons to escape them.
+ - Hivemind Link for changelings has been readded, it was removed in error
+
+
05 September 2017
Kyep updated:
diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml
index df392575fe4..3baa5323299 100644
--- a/html/changelogs/.all_changelog.yml
+++ b/html/changelogs/.all_changelog.yml
@@ -5479,3 +5479,69 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
2017-09-05:
Kyep:
- rscadd: Adds alternative military shuttle, NT Navy troop transport.
+2017-09-28:
+ MarsM0nd:
+ - bugfix: Stops the electrified arm from combat and stunbaton implant from runtiming.
+ uraniummeltdown:
+ - rscadd: Changelings have a new power, Biodegrade, for 2 evolution points. For
+ 30 chemicals you can vomit acid onto restraints, welded/locked lockers and spider
+ cocoons to escape them.
+ - bugfix: Hivemind Link for changelings has been readded, it was removed in error
+2017-09-29:
+ Citinited:
+ - rscadd: Telescreens and entertainment consoles now have 'off' and 'broken' sprites.
+ - tweak: Wooden TVs, engineering camera consoles, mining camera consoles, telescreens,
+ and entertainment consoles now have their own circuit boards and can be reconstructed!
+ - tweak: Using a multitool on a telescreen or entertainment monitor will now allow
+ you to reposition it.
+ imsxz:
+ - bugfix: Subtle messages no longer begin with "old"
+2017-09-30:
+ Jovaniph:
+ - rscadd: Coroner now has their own locker in the morgue.
+ Landerlow:
+ - rscadd: Adds hydrocodone to the Cyborg Hypospray
+2017-10-02:
+ Imsxz:
+ - bugfix: Rapid re-hatch no longer kills shadowlings.
+ - bugfix: Vampires can no longer enthrall chaplains
+2017-10-05:
+ Birdtalon:
+ - bugfix: Re-adds missing light switch to robotics.
+2017-10-06:
+ Birdtalon:
+ - bugfix: Bottler doesn't break after one use.
+2017-10-07:
+ Birdtalon:
+ - tweak: User interface tweaks to Brig timers.
+ - tweak: Seconds converted to minutes and seconds in Brig radio and security console
+ printouts.
+ - bugfix: Bees can no longer reproduce un-synthable reagents.
+ imsxz:
+ - tweak: Aliens now always spawn as a pair when their infestation event begins.
+ scrubmcnoob:
+ - bugfix: Abductors can no longer use megaphones.
+ uraniummeltdown:
+ - imageadd: Adds new sprites to the unused and used eldritch whetstones. Sprites
+ by Fury McFlurry.
+ - rscadd: Air tanks now have their own sprite, no longer looking like oxygen tanks
+ - imageadd: 10mm alt magazines have their own sprites
+2017-10-10:
+ Birdtalon:
+ - bugfix: Bees with no reagent will now work.
+2017-10-11:
+ Anasari:
+ - tweak: Slot machine no longer earn money on average. Bet changed to 100.
+ - tweak: All items can be used to smash windows instead of only those defined as
+ weapons. (e.g. including guitar & flashlight)
+ - tweak: Mulebot with pAI cannot knock people down anymore.
+ Birdtalon:
+ - bugfix: Terror spiders now respect antagHUD respawn restrictions.
+ Kyep:
+ - bugfix: mindslaving an antagbanned player now offers control of their mob to ghosts.
+ TullyBurnalot:
+ - bugfix: Can now place garbage in garbage cans without standing on top of them.
+ scrubmcnoob:
+ - bugfix: Cult must use teleport tailsman in active hands.
+ uraniummeltdown:
+ - imageadd: New PACMAN portable generator sprites
diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi
index 1cf943490d8..574052a3297 100644
Binary files a/icons/mob/back.dmi and b/icons/mob/back.dmi differ
diff --git a/icons/mob/custom_synthetic/custom-synthetic.dmi b/icons/mob/custom_synthetic/custom-synthetic.dmi
index 08642abaab9..193822d60c5 100644
Binary files a/icons/mob/custom_synthetic/custom-synthetic.dmi and b/icons/mob/custom_synthetic/custom-synthetic.dmi differ
diff --git a/icons/mob/inhands/items_lefthand.dmi b/icons/mob/inhands/items_lefthand.dmi
index c398a552667..f356242fe67 100644
Binary files a/icons/mob/inhands/items_lefthand.dmi and b/icons/mob/inhands/items_lefthand.dmi differ
diff --git a/icons/mob/inhands/items_righthand.dmi b/icons/mob/inhands/items_righthand.dmi
index 21e2e6c881b..44e4fa580bd 100644
Binary files a/icons/mob/inhands/items_righthand.dmi and b/icons/mob/inhands/items_righthand.dmi differ
diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi
index 2561b88e6be..a63ff4f5daa 100644
Binary files a/icons/obj/ammo.dmi and b/icons/obj/ammo.dmi differ
diff --git a/icons/obj/computer.dmi b/icons/obj/computer.dmi
index bbb00650479..4acb2365530 100644
Binary files a/icons/obj/computer.dmi and b/icons/obj/computer.dmi differ
diff --git a/icons/obj/kitchen.dmi b/icons/obj/kitchen.dmi
index d844e5f721a..33cf8adf5fb 100644
Binary files a/icons/obj/kitchen.dmi and b/icons/obj/kitchen.dmi differ
diff --git a/icons/obj/power.dmi b/icons/obj/power.dmi
index 32d86ddf66e..8ab87cba4bd 100644
Binary files a/icons/obj/power.dmi and b/icons/obj/power.dmi differ
diff --git a/icons/obj/stationobjs.dmi b/icons/obj/stationobjs.dmi
index fd89b23d19d..7c73065fb74 100755
Binary files a/icons/obj/stationobjs.dmi and b/icons/obj/stationobjs.dmi differ
diff --git a/icons/obj/status_display.dmi b/icons/obj/status_display.dmi
index a2dbd15e2f0..b131da89349 100644
Binary files a/icons/obj/status_display.dmi and b/icons/obj/status_display.dmi differ
diff --git a/icons/obj/tank.dmi b/icons/obj/tank.dmi
index ddcbfe8ac81..c020f467d92 100644
Binary files a/icons/obj/tank.dmi and b/icons/obj/tank.dmi differ
diff --git a/nano/templates/slotmachine.tmpl b/nano/templates/slotmachine.tmpl
index a09035d7e4c..3476ba8dc1c 100644
--- a/nano/templates/slotmachine.tmpl
+++ b/nano/templates/slotmachine.tmpl
@@ -12,10 +12,10 @@ Used In File(s): /code/game/machinery/slotmachine.dm
- Ten credits to play!
+ Hundred credits to play!
- {{:helper.link('SPIN!', 'refresh', {'ops' : 1}, data.money >= 10 && !data.working ? null : 'disabled')}}
+ {{:helper.link('SPIN!', 'refresh', {'ops' : 1}, data.money >= 100 && !data.working ? null : 'disabled')}}
{{if data.result}}
@@ -29,6 +29,6 @@ Used In File(s): /code/game/machinery/slotmachine.dm
{{else}}
Could not scan your card or could not find account!
- Please wear or hold your ID and try again.
+ Please wear or hold your ID and try again.
-{{/if}}
\ No newline at end of file
+{{/if}}
diff --git a/paradise.dme b/paradise.dme
index ca07f96d54f..96e55cfe1cd 100644
--- a/paradise.dme
+++ b/paradise.dme
@@ -408,6 +408,7 @@
#include "code\game\gamemodes\changeling\traitor_chan.dm"
#include "code\game\gamemodes\changeling\powers\absorb.dm"
#include "code\game\gamemodes\changeling\powers\augmented_eyesight.dm"
+#include "code\game\gamemodes\changeling\powers\biodegrade.dm"
#include "code\game\gamemodes\changeling\powers\chameleon_skin.dm"
#include "code\game\gamemodes\changeling\powers\digitalcamo.dm"
#include "code\game\gamemodes\changeling\powers\epinephrine.dm"
@@ -417,6 +418,7 @@
#include "code\game\gamemodes\changeling\powers\hivemind.dm"
#include "code\game\gamemodes\changeling\powers\humanform.dm"
#include "code\game\gamemodes\changeling\powers\lesserform.dm"
+#include "code\game\gamemodes\changeling\powers\linglink.dm"
#include "code\game\gamemodes\changeling\powers\mimic_voice.dm"
#include "code\game\gamemodes\changeling\powers\mutations.dm"
#include "code\game\gamemodes\changeling\powers\panacea.dm"