diff --git a/_maps/map_files/tgstation.2.1.3.dmm b/_maps/map_files/tgstation.2.1.3.dmm
index e22be902f75..1686714b1ad 100644
--- a/_maps/map_files/tgstation.2.1.3.dmm
+++ b/_maps/map_files/tgstation.2.1.3.dmm
@@ -8371,7 +8371,7 @@
"deY" = (/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/abandoned)
"deZ" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/abandoned)
"dfa" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/explored)
-"dfb" = (/obj/machinery/atmospherics/pipe/manifold,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/mine/laborcamp/security)
+"dfb" = (/obj/machinery/door_control{id = "Labor"; name = "Labor Camp Lockdown"; pixel_x = 28; pixel_y = 7; req_access_txt = "2"},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor,/area/mine/laborcamp/security)
"dfc" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/atmospherics/pipe/simple{dir = 6},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/mine/laborcamp/security)
"dfd" = (/obj/structure/girder,/turf/simulated/floor/plating{icon_plating = "asteroidplating"; icon_state = "asteroidplating"; temperature = 273.15},/area/mine/explored)
"dfe" = (/obj/structure/door_assembly/door_assembly_eng,/obj/item/weapon/airlock_electronics,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/secure_construction)
@@ -8396,7 +8396,7 @@
"dfx" = (/obj/machinery/door/poddoor/preopen{id = "Labor"; name = "labor camp blast door"},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/laborcamp)
"dfy" = (/obj/machinery/atmospherics/pipe/simple{dir = 4},/turf/simulated/wall,/area/mine/laborcamp)
"dfz" = (/obj/structure/plasticflaps,/obj/machinery/conveyor{dir = 2; id = "gulag"},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/laborcamp)
-"dfA" = (/obj/machinery/flasher{id = "Labor"; pixel_x = 0; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold{dir = 4},/turf/simulated/wall,/area/mine/laborcamp)
+"dfA" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/mine/laborcamp/security)
"dfB" = (/obj/machinery/light_switch{pixel_x = -27; pixel_y = 0},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/laborcamp)
"dfC" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{tag = "icon-asteroidwarning"; icon_state = "asteroidwarning"; temperature = 273.15},/area/mine/laborcamp)
"dfD" = (/turf/simulated/floor{tag = "icon-asteroidwarning"; icon_state = "asteroidwarning"; temperature = 273.15},/area/mine/explored)
@@ -8470,7 +8470,7 @@
"dgT" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall/r_wall,/area/mine/laborcamp/security)
"dgU" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor,/area/mine/laborcamp/security)
"dgV" = (/obj/structure/stool/bed/chair/office/dark,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/mine/laborcamp/security)
-"dgW" = (/obj/machinery/door_control{id = "Labor"; name = "Labor Camp Lockdown"; pixel_x = 28; pixel_y = 7; req_access_txt = "2"},/obj/machinery/flasher_button{id = "Labor"; pixel_x = 26; pixel_y = -3},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor,/area/mine/laborcamp/security)
+"dgW" = (/obj/machinery/atmospherics/pipe/manifold,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/flasher_button{id = "Labor"; pixel_x = 0; pixel_y = 26},/turf/simulated/floor,/area/mine/laborcamp/security)
"dgX" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/mine/laborcamp/security)
"dgY" = (/turf/simulated/floor/plating,/area/mine/laborcamp/security)
"dgZ" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8},/obj/machinery/meter,/turf/simulated/floor/plating,/area/mine/laborcamp/security)
@@ -8884,12 +8884,14 @@
"doR" = (/obj/machinery/light/small,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "dark"},/area/security/prison)
"doS" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; id_tag = "releaseatmo"; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/security/prison)
"doT" = (/obj/machinery/atmospherics/unary/vent_scrubber{id_tag = "releaseatmo"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "dark"},/area/security/prison)
+"doU" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/flasher{id = "Labor"; pixel_x = 0; pixel_y = -26},/turf/simulated/floor{icon_state = "floorgrime"},/area/mine/laborcamp)
"doV" = (/obj/machinery/light/small{dir = 8},/obj/item/weapon/wrench,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/security/prison)
"doW" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/portables_connector,/turf/simulated/floor{icon_state = "vault"; dir = 5},/area/security/prison)
"doX" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/engine/engineering)
"doY" = (/obj/structure/window/reinforced,/obj/structure/stool/bed/chair,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/prison)
"doZ" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/security/armory)
"dpa" = (/obj/machinery/light{dir = 1},/obj/machinery/computer/security/telescreen{desc = "Used for watching Prison Wing holding areas."; name = "Prison Monitor"; network = list("Prison"); pixel_x = 0; pixel_y = 30},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/camera{c_tag = "Prison Hallway West"; network = list("SS13","Prison")},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/prison)
+"dpb" = (/obj/machinery/atmospherics/pipe/manifold{dir = 4},/obj/machinery/mineral/labor_points_checker,/turf/simulated/wall,/area/mine/laborcamp)
"dpd" = (/obj/machinery/alarm{pixel_y = 23},/obj/structure/reagent_dispensers/peppertank{pixel_x = 30; pixel_y = 0},/obj/structure/closet/secure_closet/hos,/turf/simulated/floor/carpet,/area/security/hos)
"dpe" = (/obj/machinery/atmospherics/pipe/simple{dir = 5; icon_state = "intact"; level = 2},/turf/simulated/wall,/area/security/prison)
"dpf" = (/obj/structure/stool/bed,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "dark"},/area/security/prison)
@@ -10257,16 +10259,16 @@ ahlahlahlahlahlahlahlahlahlahlahjahlahlahlahlahlahlahlddZdeEdeFdeGdeHddZdeIdetde
ahlahlahlahlahlahlahlahlahlahlahjahlahlahlahlahldeQddZddZddZdeRdgideTddZdeUdghddZddZddZddZddZdeWdeudeXddMddMddMddMddMddMddMddMddMdaEdaEdaEahlahlahlahldaAdaAdaAdaAdaAdaAdaAdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCddHddHddHdaWdeYdeZdeYdaWddHddHddHddHddHdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaAdaAdaEdcldcldcldcldcldcldcldcldcldcldcldcldaEahlahlahlahlahlahlahldaEdaEdaEdaEdaEdaEdaEdaEdaEdaEdcldcldcldcldcldfadcldcldcldcldaEdaEdaEdaEdaEdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaEdaEdaEdaEdaEdaEahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahl
ahlahlahlahlahlahlahlahlahlahldtuahjahjahjahjahjdeQdgudgvddZdffdfgdgwdgqdgtdfgdgpddZdfhdfhdfhdevdeNdeNddMddMddMddMddMddMddMddMddMdaEdaEdaEdaEdaEahldaAdaAdaAdaAdaAdaAdaAdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCddHddHdaWdfidewdfjdaWddHddHddHddHdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaAdaAdaEdaEdcldcldcldcldcldcldcldcldaEdaEdaEdaEahlahlahlahlahlahlahlahldaEdaEdaEdaEdaEdaEdaEdaEdaEdaEdaEdcldcldcldfadcldcldaEdaEdaEdaEdaEdaEdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaEdaEdaEdaEdaEdaEahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahl
ahlahlahlahlahlahlahlahlahlahlahjdfkdfkdfkdfkdfkdeQdfUdfVdfRdfSdfHdfTdfgdffdfgdfgdfrdfhdfhdeNdeNdeNdeNdfsddMddMddMddMddMddMddMddMddMdaEdaEdaEdaEahldaAdaAdaAdaAdaAdaAdaAdaCdaCdaCdaCdaCdaCdaCdaDdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCddHddHddHdftdfudfvddHddHddHddHdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaDdaCdaCdaCdaCdaCdaAdaAdaAdaEdaEdaEdaEdaEdcldclddaddadaEdaAdaAdaAahlahlahlahlahlahlahlahldaEdaEdaEdaEdaEdaEdaEdaEdaEdaEdaEdaEdcldcldfadcldcldaEdaEdaEdaEdaEdaEdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaEdaEdaEdaEdaEdaEahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahl
-ahlahlahlahlahlahlahlahlahlahlahjdfkdfkdfkdfkdfkdeQdgfdggdfydgddfHdfAdfgdffdfXdfgddZdfCdfDdfDdeNdeNdevdevddMddMddMddMddMddMddMddMddMddMdaEdaEdaEahldaAdaAdaAdaAdaAdaAdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCddHddHddHddHddHdfEddHddHddHddHdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaAdaAdaAdaAdaAdaEdaEdaEdaEdaEdaEdaAdaAdaAahlahlahlahlahlahlahlahldaEdaEdaEdaHdaHdaHdaEdaEdaEdaEdaEdaEdcldcldfadcldcldcldaEdaEdaEdaEdaEdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaEdaEdaEdaEdaEdaEahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahl
+ahlahlahlahlahlahlahlahlahlahlahjdfkdfkdfkdfkdfkdeQdgfdggdfydgddfHdpbdfgdffdfXdfgddZdfCdfDdfDdeNdeNdevdevddMddMddMddMddMddMddMddMddMddMdaEdaEdaEahldaAdaAdaAdaAdaAdaAdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCddHddHddHddHddHdfEddHddHddHddHdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaAdaAdaAdaAdaAdaEdaEdaEdaEdaEdaEdaAdaAdaAahlahlahlahlahlahlahlahldaEdaEdaEdaHdaHdaHdaEdaEdaEdaEdaEdaEdcldcldfadcldcldcldaEdaEdaEdaEdaEdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaEdaEdaEdaEdaEdaEahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahl
ahlahlahlahlahlahlahlahlahlahlahjdfkdfkdfkdfkdfkdeQddZddZddZdfBdfgdfFdfHdfGdfIdfJdfKdfLdfLdfMdfNdeNdevdevdfOddMddMddMddMddMddMddMddMddMdaEdaEdaEahldaAdaAdaAdaAdaAdaAdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCddHddHddHddHddHddHddHdfEddHddHdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaAdaAdaAdaAdaAdaAdaAdaAdaAdaAdaAdaAahlahlahlahlahlahlahlahlahldaEdaEdaEdaHdaHdaHdaEdaEdaEdaEdaEdcldcldfPdfQdcldcldaEdaEdaEdaEdaEdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaEdaEdaEdaEdaEdaEahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahl
ahlahlahlahlahlahlahlahlahlahlahjdfkdfkdfkdfkdfkdfqdfwdfqdfxdfgdfgdffdfgdfgdfWdfzddZdfYdfZdgadeNdeNdevdevdgbddMddMddMddMddMddMddMddMddMddMdaEdaEahldaAdaAdaAdaAdaAdaAdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCddHddHddHddHdfEddHddHddHddHddHdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaAdaAdaAdaAdaAdaAdaAdaAdaAahlahlahlahlahlahlahlahlahldaEdaEdaEdaHdaHdaHdaHdaHdaEdaEdaEdcldcldcldfadcldcldcldaEdaEdaEdaEdaEdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaEdaEdaEdaEdaEdaEahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahl
ahlahlahlahlahlahlahlahlahlahlahjdfkdfkdfkdfkdfkdeQddZddZddZdfgdfgdffdfIdgcddZdfpddZdfhdfhdfhdevdevdevdevdgeddZddMddMddMddMddMddMddMddMddMddMdaEahldaAdaAdaAdaAdaAdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCddHddHddHddHddHddHddHddHddHddHdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaAdaAdaAdaAahlahlahlahlahlahlahlahldaEdaEdaEdaEdaHdaHdaHdaHdaEdaEdaEdcldcldcldfadcldcldcldaEdaEdaEdaEdaEdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaEdaEdaEdaEdaEdaEdaEahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahl
-ahlahlahlahlahlahlahlahlahlahlahjdfkdfkdfkdfkdfkahlahlddZdfldfgdfgdffdfndfodfndfmddZdgjdgkdevdevdevdevdfsddMddMddMddMddMddMddMddMddMddMddMddMdaEahjdaAdaAdaAdaAdaAdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCddHddHddHddHddHddHddHddHddHdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaAdaAdaAdaAahlahlahlahlahlahlahlahlahldaEdaEdaEdaHdaHdaHdaHdaEdaEdaEdcldcldcldfadcldcldcldaEdaEdaEdaEdaEdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaEdaEdaEdaEdaEdaEdaEahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahl
+ahlahlahlahlahlahlahlahlahlahlahjdfkdfkdfkdfkdfkahlahlddZdfldfgdfgdoUdfndfodfndfmddZdgjdgkdevdevdevdevdfsddMddMddMddMddMddMddMddMddMddMddMddMdaEahjdaAdaAdaAdaAdaAdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCddHddHddHddHddHddHddHddHddHdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaAdaAdaAdaAahlahlahlahlahlahlahlahlahldaEdaEdaEdaHdaHdaHdaHdaEdaEdaEdcldcldcldfadcldcldcldaEdaEdaEdaEdaEdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaEdaEdaEdaEdaEdaEdaEahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahl
ahlahlahlahlahlahlahlahlahlahlahjdfkdfkdfkdfkdfkdgldgmdgmdgmdgmdgndgodgmdgmdgmddZdgmdgmdfddevdeNdevdevdfsddMddMddMddMddMddMddMddMddMddMddMddMdaEahlahldaAdaAdaAdaAdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCddHddHddHddHddHddHdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaAdaAdaAdaAdaAahlahlahlahlahlahlahlahldaEdaEdaEdaEdaHdaHdaHdaEdaEdaEdcldcldcldfadcldcldcldaEdaEdaEdaEdaEdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaEdaEdaEdaEdaEdaEdaEahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahl
-ahlahlahlahlahlahlahlahlahlahlahjdfkdfkdfkdfkdfkdeVdgYdeVdgsdgFdfcdfbdeScMZcMfcMedgrdgydfhdfhdevdevdevddMddMddMddMddMddMddMddMddMddMddMddMddMddMdaEahlahldaAdaAdaAdaAdaAdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCddHddHddHdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaAdaAdaAdaAahlahlahlahlahlahlahlahldaEdaEdaEdaEdaHdaHdaHdaHdaEdaEdaEdcldcldfadcldcldcldcldaEdaEdaEdaEdaEdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaEdaEdaEdaEdaEdaEdaEahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahl
+ahlahlahlahlahlahlahlahlahlahlahjdfkdfkdfkdfkdfkdeVdfAdeVdgsdgFdfcdgWdeScMZcMfcMedgrdgydfhdfhdevdevdevddMddMddMddMddMddMddMddMddMddMddMddMddMddMdaEahlahldaAdaAdaAdaAdaAdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCddHddHddHdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaAdaAdaAdaAahlahlahlahlahlahlahlahldaEdaEdaEdaEdaHdaHdaHdaHdaEdaEdaEdcldcldfadcldcldcldcldaEdaEdaEdaEdaEdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaEdaEdaEdaEdaEdaEdaEahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahl
ahlahlahlahlahlahlahlahlahlahlahjdfkdfkdfkdfkdfkdgldgmdgmdgmcLGdgodgmdgmdgAcLEdgodgmdgmdfhdfhdevdevddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMdaEdaEahlahldaAdaAdaAdaAdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaAdaAdaAahlahlahlahlahlahlahlahldaEdaEdaEdaEdaHdaHdaHdaHdaEdaEdaEdcldcldfadcldcldcldcldaEdaEdaEdaEdaEdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaEdaEdaEdaEdaEahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahl
ahlahlahlahlahlahlahlahlahlahlahjdfkdfkdfkdfkdfkdgldgDdtwcLycKWcapdgmbJZdgKbtGavRdgNdgOdgPdgQdgRddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMdaEahlahldaAdaAdaAdaAdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaDdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaDdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaAdaAdaAdaAahlahlahlahlahlahlahldaEdaEdaEdaEdaHdaHdaHdaHdaEdaEdaEdcldcldfPdgSdfQdcldcldaEdaEdaEdaEdaEdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaEdaEdaEdaEdaEdaEahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahl
-ahlahlahlahlahlahlahlahlahlahlahjdfkdfkdfkdfkdfkdgTdgUdgrdgVdgrdgWdgmdgXdgYdgYdgZdhadgmddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMdaEdaEahldaAdaAdaAdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaAdaAdaAdaAahlahlahlahlahlahlahlahldaEdaEdaEdaHdaHdaHdaHdaEdaEdaEdcldcldcldcldfadcldcldaEdaEdaEdaEdaEdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaEdaEdaEdaEdaEdaEahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahl
+ahlahlahlahlahlahlahlahlahlahlahjdfkdfkdfkdfkdfkdgTdgUdgrdgVdgrdfbdgmdgXdgYdgYdgZdhadgmddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMdaEdaEahldaAdaAdaAdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaAdaAdaAdaAahlahlahlahlahlahlahlahldaEdaEdaEdaHdaHdaHdaHdaEdaEdaEdcldcldcldcldfadcldcldaEdaEdaEdaEdaEdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaEdaEdaEdaEdaEdaEahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahl
ahlahlahlahlahlahlahlahlahjahjahjahjahjahjahjahjdhbdhcdhddhedhfdhgdgmdhhdhidhjdhkdhadgmddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMdaEahldaAdaAdaAdaAdaAdaCdaCdaCdaCdaCdaCdaCdaCdaDdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaKdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaAdaAdaAdaAahlahlahlahlahlahlahlahldaEdaEdaEdaHdaHdaHdaHdaEdaEdaEdaEdcldcldcldfadcldcldaEdaEdaEdaEdaEdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaEdaEdaEdaEdaEdaEdaEahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahl
ahlahlahlahlahlahlahlahlahlahlahjahlahlahlahlahlduudhmdhndgmdgmdgmdgmdgmdgmdgmdgmdgmdgmddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMdaEahlahldaAdaAdaAdaAdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaAdaAdaAdaAdaAahlahlahlahlahlahlahlahldaEdaEdaEdaHdaHdaHdaHdaEdaEdaEdcldcldhodeCdeDdcldaEdaEdaEdaEdaEdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaEdaEdaEdaEdaEdaEdaEdaEahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahl
ahlahlahlahlahlahlahlahlahlahlahlahlahlahlahldaEdaEdaEdaEddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMddMdaEahjdaAdaAdaAdaAdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaDdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaCdaAdaAdaAdaAdaAdaAahlahlahlahlahlahlahldaEdaEdaEdaEdaHdaHdaHdaEdaEdaEdcldcldeydePdeAdcldaEdaEdaEdaEdaEdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaHdaEdaEdaEdaEdaEdaEdaEdaEdaEdaEahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahlahl
diff --git a/code/game/machinery/bots/ed209bot.dm b/code/game/machinery/bots/ed209bot.dm
index 5dd0535a9e3..243b5b63805 100644
--- a/code/game/machinery/bots/ed209bot.dm
+++ b/code/game/machinery/bots/ed209bot.dm
@@ -315,7 +315,8 @@ Auto Patrol: []"},
M.Stun(5)
if(declare_arrests)
- declare_arrest()
+ var/area/location = get_area(src)
+ broadcast_hud_message("[src.name] is [arrest_type ? "detaining" : "arresting"] level [threatlevel] scumbag [target] in [location]", src)
target.visible_message("[src.target] has been stunned by [src]!",\
"[src.target] has been stunned by [src]!")
@@ -1015,12 +1016,3 @@ Auto Patrol: []"},
/obj/machinery/bot/ed209/redtag/New()
new /obj/machinery/bot/ed209(get_turf(src),null,"r")
qdel(src)
-
-
-/obj/machinery/bot/ed209/proc/declare_arrest()
- var/area/location = get_area(src)
- var/turf/myturf = get_turf(src)
- for(var/mob/living/carbon/human/human in mob_list)
- var/turf/humanturf = get_turf(human)
- if((humanturf.z == myturf.z) && istype(human.glasses, /obj/item/clothing/glasses/hud/security))
- human.show_message("\icon[human.glasses] [src.name] is [arrest_type ? "detaining" : "arresting"] level [threatlevel] scumbag [target] in [location]", 1)
diff --git a/code/game/machinery/bots/secbot.dm b/code/game/machinery/bots/secbot.dm
index 94795f8264a..b66e7d16031 100644
--- a/code/game/machinery/bots/secbot.dm
+++ b/code/game/machinery/bots/secbot.dm
@@ -277,7 +277,8 @@ Auto Patrol: []"},
M.Stun(5)
if(declare_arrests)
- declare_arrest()
+ var/area/location = get_area(src)
+ broadcast_hud_message("[src.name] is [arrest_type ? "detaining" : "arresting"] level [threatlevel] scumbag [target] in [location]", src)
target.visible_message("[src.target] has been stunned by [src]!",\
"[src.target] has been stunned by [src]!")
@@ -774,12 +775,4 @@ Auto Patrol: []"},
overlays -= "hs_arm"
new /obj/item/robot_parts/l_arm(get_turf(src))
user << "You remove the robot arm from [src]."
- build_step--
-
-/obj/machinery/bot/secbot/proc/declare_arrest()
- var/area/location = get_area(src)
- var/area/myturf = get_turf(src)
- for(var/mob/living/carbon/human/human in mob_list)
- var/turf/humanturf = get_turf(human)
- if((humanturf.z == myturf.z) && istype(human.glasses, /obj/item/clothing/glasses/hud/security))
- human.show_message("\icon[human.glasses] [src.name] is [arrest_type ? "detaining" : "arresting"] level [threatlevel] scumbag [target] in [location]", 1)
+ build_step--
\ No newline at end of file
diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm
index 5b9733cd827..8061ba7f4d2 100644
--- a/code/game/machinery/doors/brigdoors.dm
+++ b/code/game/machinery/doors/brigdoors.dm
@@ -64,6 +64,7 @@
if(stat & (NOPOWER|BROKEN)) return
if(timing)
if(world.time > src.releasetime)
+ broadcast_hud_message("[src]'s timer has expired. Releasing prisoner.", src)
src.timer_end() // open doors, reset timer, clear status screen
timing = 0
timeset(0)
diff --git a/code/modules/mining/laborcamp/laborstacker.dm b/code/modules/mining/laborcamp/laborstacker.dm
index 334d71311e5..81c682355d5 100644
--- a/code/modules/mining/laborcamp/laborstacker.dm
+++ b/code/modules/mining/laborcamp/laborstacker.dm
@@ -3,7 +3,6 @@
/obj/machinery/mineral/labor_claim_console
name = "point claim console"
desc = "A stacking console with an electromagnetic writer, used to track ore mined by prisoners."
- name = "stacking machine console"
icon = 'icons/obj/machines/mining_machines.dmi'
icon_state = "console"
density = 0
@@ -34,18 +33,14 @@
/obj/machinery/mineral/labor_claim_console/attack_hand(user as mob)
- name = "point claim console"
- icon = 'icons/obj/machines/mining_machines.dmi'
- icon_state = "console"
- desc = "A stacking console with an electromagnetic writer, used to track ore mined by prisoners."
- density = 0
- anchored = 1
var/dat
dat += text("Point Claim Console
")
if(emagged) //Shit's broken
dat += text("QUt0A In%aL*D
")
else if(istype(inserted_id)) //There's an ID in there.
- dat += text("[inserted_id.points] / [inserted_id.goal] collected. Eject ID.
")
+ dat += text("ID: [inserted_id.registered_name] Eject ID.
")
+ dat += text("Points Collected:[inserted_id.points]
")
+ dat += text("Point Quota: [inserted_id.goal ? inserted_id.goal : "Unlimited"] - Reach your quota to earn your release
")
dat += text("Unclaimed Collection Points: [machine.points]. Claim points.
")
else //No ID in sight. Complain about it.
dat += text("No ID inserted. Insert ID.
")
@@ -91,26 +86,31 @@
usr.drop_item()
I.loc = src
inserted_id = I
- else usr << "\red No valid ID."
+ else usr << "Invalid ID."
if(check_auth()) //Sanity check against hef spoofs
if(href_list["choice"] == "station")
var/datum/shuttle_manager/s = shuttles["laborcamp"]
if(s.location == /area/shuttle/laborcamp/outpost)
if(alone_in_area(get_area(loc), usr))
if (s.move_shuttle(0)) // No delay, to stop people from getting on while it is departing.
- usr << "\blue Shuttle recieved message and will be sent shortly."
+ broadcast_hud_message("[inserted_id.registered_name] has met their quota and has returned to the station. Minerals and Prisoner ID card ready for retrieval.", src)
+ usr << "Shuttle recieved message and will be sent shortly."
else
- usr << "\blue Shuttle is already moving."
+ usr << "Shuttle is already moving."
else
- usr << "\red Prisoners are only allowed to be released while alone."
+ usr << "Prisoners are only allowed to be released while alone."
else
- usr << "\blue Shuttle is already on-station."
+ usr << "Shuttle is already on-station."
if(href_list["choice"] == "release")
+ var/datum/shuttle_manager/s = shuttles["laborcamp"]
+ if(s.location == /area/shuttle/laborcamp/outpost)
+ usr << "Prisoners can only be released while docked with the station."
+ return
if(alone_in_area(get_area(loc), usr))
if(release_door.density)
release_door.open()
else
- usr << "\red Prisoners are only allowed to be released while alone."
+ usr << "Prisoners are only allowed to be released while alone."
src.updateUsrDialog()
return
@@ -136,4 +136,30 @@
var/a = inp.amount
if(n in ore_values)
points += ore_values[n] * a
+ ..()
+
+
+/**********************Point Lookup Console**************************/
+/obj/machinery/mineral/labor_points_checker
+ name = "points checking console"
+ desc = "A console used by prisoners to check the progress on their quotas. Simply swipe a prisoner ID."
+ icon = 'icons/obj/machines/mining_machines.dmi'
+ icon_state = "console"
+ density = 0
+ anchored = 1
+
+/obj/machinery/mineral/labor_points_checker/attack_hand(user as mob)
+ examine(user)
+
+/obj/machinery/mineral/labor_points_checker/attackby(obj/item/I as obj, mob/user as mob)
+ if(istype(I, /obj/item/weapon/card/id))
+ if(istype(I, /obj/item/weapon/card/id/prisoner))
+ var/obj/item/weapon/card/id/prisoner/prisoner_id = I
+ user << "ID: [prisoner_id.registered_name]"
+ user << "Points Collected:[prisoner_id.points]"
+ user << "Point Quota: [prisoner_id.goal ? prisoner_id.goal : "Unlimited"]"
+ user << "Collect points by bringing smelted minerals to the Labor Shuttle stacking machine. Reach your quota to earn your release."
+ else
+ user << "Error: Invalid ID"
+ return
..()
\ No newline at end of file
diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm
index a4bf9852443..40eb8d8364f 100644
--- a/code/modules/mob/mob_helpers.dm
+++ b/code/modules/mob/mob_helpers.dm
@@ -453,3 +453,10 @@ proc/is_special_character(mob/M) // returns 1 for special characters and 2 for h
return
else
return
+
+/proc/broadcast_hud_message(var/message, var/broadcast_source)
+ var/turf/sourceturf = get_turf(broadcast_source)
+ for(var/mob/living/carbon/human/human in mob_list)
+ var/turf/humanturf = get_turf(human)
+ if((humanturf.z == sourceturf.z) && istype(human.glasses, /obj/item/clothing/glasses/hud/security))
+ human.show_message("\icon[human.glasses] [message]", 1)
\ No newline at end of file