diff --git a/_maps/map_files/tgstation.2.1.3.dmm b/_maps/map_files/tgstation.2.1.3.dmm
index 77d60a713f8..d75598654b3 100644
--- a/_maps/map_files/tgstation.2.1.3.dmm
+++ b/_maps/map_files/tgstation.2.1.3.dmm
@@ -65,7 +65,7 @@
"abm" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/brig)
"abn" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "dark"},/area/security/brig)
"abo" = (/turf/simulated/floor/carpet,/area/security/hos)
-"abp" = (/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -32},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor{icon_state = "red"},/area/security/main)
+"abp" = (/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -32},/turf/simulated/floor{icon_state = "red"},/area/security/main)
"abq" = (/obj/structure/sign/securearea{pixel_y = -32},/turf/space,/area/space)
"abr" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating/airless,/area/solar/auxstarboard)
"abs" = (/obj/structure/stool/bed,/obj/machinery/camera{c_tag = "Prison Cell 3"; network = list("SS13","Prison")},/obj/item/device/radio/intercom{desc = "Talk through this. It looks like it has been modified to not broadcast."; dir = 2; name = "Prison Intercom (General)"; pixel_x = 0; pixel_y = 24; prison_radio = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison)
@@ -103,11 +103,11 @@
"abY" = (/obj/structure/rack,/obj/item/weapon/shield/riot{pixel_x = -3; pixel_y = 3},/obj/item/weapon/shield/riot,/obj/item/weapon/shield/riot{pixel_x = 3; pixel_y = -3},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/security/armory)
"abZ" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/brig)
"aca" = (/obj/structure/closet/l3closet/security,/obj/machinery/camera{c_tag = "Brig Equipment Room"; dir = 4},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/main)
-"acb" = (/obj/structure/table,/obj/item/weapon/packageWrap,/obj/item/weapon/pen,/turf/simulated/floor{icon_state = "red"},/area/security/main)
-"acc" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/sortjunction{dir = 8; icon_state = "pipe-j2s"; sortType = 7},/turf/simulated/floor,/area/security/main)
+"acb" = (/obj/effect/landmark{name = "secequipment"},/turf/simulated/floor{icon_state = "red"},/area/security/main)
+"acc" = (/obj/machinery/light,/obj/effect/landmark{name = "secequipment"},/turf/simulated/floor{icon_state = "red"},/area/security/main)
"acd" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/security/hos)
"ace" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor/carpet,/area/security/hos)
-"acf" = (/obj/machinery/light,/turf/simulated/floor{icon_state = "red"},/area/security/main)
+"acf" = (/obj/machinery/light_switch{pixel_y = -23},/obj/effect/landmark{name = "secequipment"},/turf/simulated/floor{icon_state = "red"},/area/security/main)
"acg" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/machinery/computer/security,/turf/simulated/floor{icon_state = "red"},/area/security/main)
"ach" = (/obj/machinery/camera{c_tag = "Security Office"; dir = 1; network = list("SS13")},/obj/machinery/computer/secure_data,/turf/simulated/floor{icon_state = "red"},/area/security/main)
"aci" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor/plating,/area/maintenance/fsmaint)
@@ -122,7 +122,7 @@
"acr" = (/obj/machinery/power/apc{dir = 1; name = "Labor Shuttle Dock APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/brig)
"acs" = (/obj/machinery/vending/security,/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/main)
"act" = (/obj/structure/disposalpipe/junction{icon_state = "pipe-y"; dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/stool/bed/chair,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/security/main)
-"acu" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/main)
+"acu" = (/obj/structure/noticeboard{dir = 1; pixel_y = -27},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/effect/landmark{name = "secequipment"},/turf/simulated/floor{icon_state = "red"},/area/security/main)
"acv" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/carpet,/area/security/hos)
"acw" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/carpet,/area/security/hos)
"acx" = (/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor/carpet,/area/security/hos)
@@ -164,9 +164,9 @@
"adh" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/security/hos)
"adi" = (/obj/machinery/door/airlock/glass_command{name = "Head of Security"; req_access_txt = "58"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/carpet,/area/security/hos)
"adj" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/security/hos)
-"adk" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/main)
+"adk" = (/obj/structure/disposalpipe/segment{dir = 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/security/main)
"adl" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/security/main)
-"adm" = (/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/security/main)
+"adm" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/sortjunction{dir = 4; icon_state = "pipe-j2s"; sortType = 7},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/main)
"adn" = (/obj/machinery/camera{c_tag = "Security Escape Pod"; dir = 4; network = list("SS13")},/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"ado" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst{dir = 4},/turf/simulated/shuttle/wall{icon_state = "swall_f6"; dir = 2},/area/shuttle/escape_pod3/station)
"adp" = (/turf/simulated/shuttle/wall{icon_state = "swall12"; dir = 2},/area/shuttle/escape_pod3/station)
@@ -198,11 +198,11 @@
"adP" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/brig)
"adQ" = (/turf/simulated/floor,/area/security/main)
"adR" = (/obj/effect/landmark/start{name = "Head of Security"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/main)
-"adS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/main)
-"adT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/main)
-"adU" = (/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/main)
+"adS" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/main)
+"adT" = (/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_y = 30},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/effect/landmark{name = "secequipment"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/main)
+"adU" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/effect/landmark{name = "secequipment"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/main)
"adV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/table,/obj/machinery/recharger,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/main)
-"adW" = (/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/security/main)
+"adW" = (/obj/effect/landmark/start{name = "Security Officer"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/main)
"adX" = (/obj/machinery/door/airlock/external{name = "Security Escape Pod"; req_access_txt = "63"},/turf/simulated/floor/plating,/area/security/main)
"adY" = (/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"adZ" = (/obj/machinery/door/airlock/shuttle{name = "Escape Pod Airlock"},/turf/simulated/shuttle/floor,/area/shuttle/escape_pod3/station)
@@ -218,16 +218,16 @@
"aej" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating/airless,/area/solar/auxport)
"aek" = (/turf/simulated/floor{icon_state = "warnwhite"; dir = 1},/area/security/prison)
"ael" = (/turf/simulated/floor{icon_state = "warnwhite"; dir = 5},/area/security/prison)
-"aem" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/main)
+"aem" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/effect/landmark/start{name = "Security Officer"},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/main)
"aen" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/effect/landmark/start{name = "Security Officer"},/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor,/area/security/main)
"aeo" = (/obj/structure/table,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/item/weapon/razor{pixel_x = -6},/obj/item/stack/medical/ointment{pixel_y = 4},/obj/item/stack/medical/bruise_pack{pixel_x = 10; pixel_y = 2},/obj/item/weapon/reagent_containers/syringe/inaprovaline{pixel_x = 5; pixel_y = -2},/turf/simulated/floor{icon_state = "whitehall"; dir = 2},/area/security/prison)
-"aep" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/main)
+"aep" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/obj/effect/landmark/start{name = "Security Officer"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/main)
"aeq" = (/obj/structure/closet/secure_closet/brig{anchored = 1},/turf/simulated/floor{icon_state = "red"},/area/security/prison)
"aer" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_security{name = "Prison Wing"; req_access_txt = "2"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/prison)
"aes" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass_security{name = "Prison Wing"; req_access_txt = "2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/prison)
"aet" = (/obj/machinery/door/airlock/maintenance{name = "Security Maintenance"; req_access_txt = "2"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/security/processing)
"aeu" = (/obj/machinery/flasher/portable,/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/security/armory)
-"aev" = (/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/main)
+"aev" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/effect/landmark/start{name = "Security Officer"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/main)
"aew" = (/obj/structure/rack,/obj/item/weapon/gun/energy/laser{pixel_x = -3; pixel_y = 3},/obj/item/weapon/gun/energy/laser,/obj/item/weapon/gun/energy/laser{pixel_x = 3; pixel_y = -3},/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/security/armory)
"aex" = (/obj/structure/rack,/obj/item/weapon/gun/energy/gun{pixel_x = -3; pixel_y = 3},/obj/item/weapon/gun/energy/gun,/obj/item/weapon/gun/energy/gun{pixel_x = 3; pixel_y = -3},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/ai_monitored/security/armory)
"aey" = (/obj/structure/table/reinforced,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/door/window/brigdoor{dir = 1; name = "Armory Desk"; req_access_txt = "3"},/obj/machinery/door/window/southleft{name = "Reception Desk"; req_access_txt = "63"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden)
@@ -241,7 +241,7 @@
"aeG" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden)
"aeH" = (/obj/structure/table,/obj/item/weapon/handcuffs,/obj/item/device/assembly/timer,/turf/simulated/floor,/area/security/main)
"aeI" = (/obj/structure/table,/obj/item/device/radio/off,/obj/item/weapon/screwdriver{pixel_y = 10},/turf/simulated/floor,/area/security/main)
-"aeJ" = (/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/main)
+"aeJ" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/effect/landmark/start{name = "Security Officer"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/main)
"aeK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/main)
"aeL" = (/obj/structure/sign/pods{pixel_x = 32; pixel_y = 0},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/security/main)
"aeM" = (/obj/structure/closet/emcloset,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fsmaint)
@@ -277,7 +277,7 @@
"afq" = (/obj/item/weapon/cigbutt,/turf/simulated/floor{icon_state = "dark"},/area/security/brig)
"afr" = (/obj/structure/closet{name = "Evidence Closet"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/brig)
"afs" = (/turf/simulated/floor{icon_state = "red"; dir = 8},/area/hallway/secondary/exit)
-"aft" = (/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor{icon_state = "red"},/area/security/main)
+"aft" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/main)
"afu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/brig)
"afv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/brig)
"afw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/security/warden)
@@ -466,7 +466,7 @@
"aiX" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/brig)
"aiY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/brig)
"aiZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door_timer/cell_4,/obj/machinery/light,/turf/simulated/floor{icon_state = "red"},/area/security/brig)
-"aja" = (/obj/structure/noticeboard{dir = 1; pixel_y = -27},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "red"},/area/security/main)
+"aja" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/security/main)
"ajb" = (/turf/simulated/floor,/area/security/brig)
"ajc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = "0"},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/brig)
"ajd" = (/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/crew_quarters/courtroom)
@@ -492,8 +492,8 @@
"ajx" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/security/brig)
"ajy" = (/obj/machinery/door/airlock/glass_security{id_tag = "innerbrig"; name = "Brig"; req_access_txt = "63"},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/brig)
"ajz" = (/obj/machinery/door/airlock/glass_security{id_tag = "innerbrig"; name = "Brig"; req_access_txt = "63"},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/brig)
-"ajA" = (/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_y = 30},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/main)
-"ajB" = (/obj/machinery/atmospherics/pipe/manifold{pipe_color = "blue"; dir = 8; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/main)
+"ajA" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/main)
+"ajB" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/security/main)
"ajC" = (/obj/structure/table,/obj/item/weapon/storage/box/bodybags,/obj/item/weapon/pen,/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/prison)
"ajD" = (/obj/structure/stool/bed/chair{dir = 4; name = "Prosecution"},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/crew_quarters/courtroom)
"ajE" = (/obj/structure/table/woodentable,/turf/simulated/floor{icon_state = "neutral"; dir = 8},/area/crew_quarters/courtroom)
@@ -8838,6 +8838,7 @@
"dnX" = (/turf/simulated/wall/r_wall,/area/mine/explored)
"dnY" = (/turf/simulated/wall/r_wall,/area/mine/production)
"dnZ" = (/obj/structure/disposalpipe/segment,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor,/area/mine/production)
+"doa" = (/obj/structure/table,/obj/item/weapon/packageWrap,/obj/item/weapon/pen,/turf/simulated/floor,/area/security/main)
"dob" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor,/area/mine/production)
"doc" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/mine/production)
"dod" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/mine/production)
@@ -9237,13 +9238,13 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaaaafaaaaaRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafdpmdoLdpfdoLabddpiaaiabsaaqabtabfabuaaqabvabhabwaaKabxabdabyaaiabzabzabzabzabzabzabzabzabzabAabBaeKafmabDabodoJdoIabEagpaaNaaaaafabIabJabIaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaRaaaaaaaafaafaafaaaaaaabraafaafaaaaafaafaaaaaaaaHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaafabKaafaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafdpmdoTdoRdoSagjdpnaaiabLaaqabMabNabOaaqabPabhabQaaKabPabdabRaaiabSabTabVabVabWabXabYdoOabzacaabBaeKafmacdaceabodoPabodoUaaNaafaafabIaciabIaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaafacjacjacjacjacjaafackaafacjacjacjacjacjaafaaGaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaHaaHaaGaaGaaaaaaaaaaclaaaaaaaaaaaGaaGaaHaaHaaHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlabddowdoxdosdoydozaaiabhacmabdabfabhacnabfabhabhacoabfabdabdaaiabSacpacqacqacqacqdoCdoAabzacsabBaeKafmaaNdoBacvacwacxacyaaNafOabkacBabJabIabIacCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaafacDacEacEacEacEacFacGacHacIacIacIacIacJaafaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaaaaaaafaafaaaaaaaaaaclaafaafaaaaafaafaaaaaaaaHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahldoMdoKdoDdoHacPacMacNdpaacPacQacRacSacPacTacUacVacWaaiacXacYdoEdoFadbdoGdoQdoZbYgabBadfadgabkaaNadhaaNadiaaNadjaaNadQadmabkadnadoadpadpadqaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaafadradradradradraafacGaafadradradradradraafaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaafadsadsadsadsadsaafadtaafadsadsadsadsadsaafaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlaKubRDcdladzamJadwaliadBadzadAadBadzadzadCajwadEadFaaiadGamfadIadJadJadKalbakZalaajQaksadVabkadSadTadUadRaemaepadUaevadWadXadYadZaeaaohaecaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaaaaaaaaaafaaaaaaaafacGaaaaaaaaaaafaaaaaaaaaaaHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaafaedaeeaeeaeeaeeaefaegaehaeiaeiaeiaeiaejaafaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlaaaahlahlahlahldoraaiaaiaaiaaidoidoudotdbydbjaeodaZaeqaeqaeqabdaeraesaaiaoiaeudbaaewaexbEBcuwaeAabzaeBchVaeDabkcuGaeHadQcuUaeEaeIdovaeJaeLabkaeMaeNadpadpaeOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaafacjacjacjacjacjaafacGaafacjacjacjacjacjaafaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaafaePaePaePaePaePaafaegaafaePaePaePaePaePaafaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaiaaiabdafaabdaeSaeSaeSaeSaeSaeSaeSaeTaeUaeVafhaeXaeYaeZagdafbagkafdaeVafeagoajBajAaeWafjadQadlaeEafkaeFadkabkacBabIabIabIacCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaafacDacEacEacEacEacFacGacHacIacIacIacIacJaafaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaaaaaaaaaafaaaaaaaafaegaaaaaaaaaaafaaaaaaaaaaaRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaafaaaaaaaaiadHaekaelaeSafnafoafpafqafoaeSafuafvafwagMafxafyafcahmafBafMafXafNagbagaafHafIaenaczafIacAadyadxadvacuafPafQafRafSabIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaafadradradradradraafacGaafadradradradradraafaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaafadsadsadsadsadsaafaegaafadsadsadsadsadsaafaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaafaafaafaafaafaafaafaafaaiadaaaDafKaeSafTafUafVafWafoaeSafuafLagGagHagiageagfaggaghafEagMafDafGafFagmagnacKagnagnactagraccagsagtabkabkadYaguabIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaaaaaaaaaafaaaaaaaaaacGaaaaaaaaaaafaaaaaaaaaaaHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaafaedaeeaeeaeeaeeaefaegaehaeiaeiaeiaeiaejaafaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaaaaaaaaaaaaaaaaaiabFaaDadOagAabnagwagxagyagzagAadPaeCafwafCagcafiaflagKabGaeGagNaeQagPahsajaaftacfagUachacgacbabpagZahaahbahcahdaheahfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaafacjacjacjacjacjaafacGaafacjacjacjacjacjaafaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaaaaaaafaafaaaaaaaaaaclaafaafaaaaafaafaaaaaaaaHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahldoMdoKdoDdoHacPacMacNdpaacPacQacRacSacPacTacUacVacWaaiacXacYdoEdoFadbdoGdoQdoZbYgabBadfadgabkaaNadhaaNadiaaNadjaaNdoaajBabkadnadoadpadpadqaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaafadradradradradraafacGaafadradradradradraafaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaafadsadsadsadsadsaafadtaafadsadsadsadsadsaafaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlahlahlahlahlahlahlaKubRDcdladzamJadwaliadBadzadAadBadzadzadCajwadEadFaaiadGamfadIadJadJadKalbakZalaajQaksadVabkaemaepadWadRaevaeJadWaftajaadXadYadZaeaaohaecaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaaaaaaaaaafaaaaaaaafacGaaaaaaaaaaafaaaaaaaaaaaHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaafaedaeeaeeaeeaeeaefaegaehaeiaeiaeiaeiaejaafaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahlaaaahlahlahlahldoraaiaaiaaiaaidoidoudotdbydbjaeodaZaeqaeqaeqabdaeraesaaiaoiaeudbaaewaexbEBcuwaeAabzaeBchVaeDabkcuGaeHadQcuUaeEaeIdovajAaeLabkaeMaeNadpadpaeOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaafacjacjacjacjacjaafacGaafacjacjacjacjacjaafaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaafaePaePaePaePaePaafaegaafaePaePaePaePaePaafaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaiaaiabdafaabdaeSaeSaeSaeSaeSaeSaeSaeTaeUaeVafhaeXaeYaeZagdafbagkafdaeVafeagoadUadTaeWafjadQadlaeEafkaeFadSabkacBabIabIabIacCaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaafacDacEacEacEacEacFacGacHacIacIacIacIacJaafaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaaaaaaaaaafaaaaaaaafaegaaaaaaaaaaafaaaaaaaaaaaRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaafaaaaaaaaiadHaekaelaeSafnafoafpafqafoaeSafuafvafwagMafxafyafcahmafBafMafXafNagbagaafHafIaenaczafIacAadyadxadvadmafPafQafRafSabIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaafadradradradradraafacGaafadradradradradraafaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaafadsadsadsadsadsaafaegaafadsadsadsadsadsaafaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaafaafaafaafaafaafaafaafaaiadaaaDafKaeSafTafUafVafWafoaeSafuafLagGagHagiageagfaggaghafEagMafDafGafFagmagnacKagnagnactagradkagsagtabkabkadYaguabIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaaaaaaaaaafaaaaaaaaaacGaaaaaaaaaaafaaaaaaaaaaaHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaafaedaeeaeeaeeaeeaefaegaehaeiaeiaeiaeiaejaafaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaafaaaaaaaaaaaaaaaaaiabFaaDadOagAabnagwagxagyagzagAadPaeCafwafCagcafiaflagKabGaeGagNaeQagPahsacuacfaccacbachacgagUabpagZahaahbahcahdaheahfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaafacjacjacjacjacjaafacGaafacjacjacjacjacjaafaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaafaePaePaePaePaePaafaegaafaePaePaePaePaePaafaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaafaafaafaafaafaaaaafaaaaaaaaiadLadMadNaeSahgahhahhahhahhahiadDagFaeVafAaezaeyahpahqaduafzaeVaeVacBagRahtacBacBabkabkabkabkabkabkabkabkahuahvahwahxaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaafacDacEacEacEacEacFacGacHacIacIacIacIacJaafaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaaaaaaaaaafaaaaaaaaaaegaaaaaaaaaaafaaaaaaaaaaaHaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaafahyahyakWahyadcaeRaddaeSaeSaeSaeSaeSaeSahzaeSahFahGahDahDahDahDahDahHahIahDahJahKahLagQahIagFaeRahMahNahOaawahQahRahSahTahUahVahWahXaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaaadradradradradraafacGaafadradradradradraaaaaRaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaafadsadsadsadsadsaafaegaafadsadsadsadsadsaafaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaaaahYahZahZahZaiaaaaaafahyabbabaacOacZaeRacLacraigahDabZabmabHailaimainaioaipaipaipaioaipaiqairaipairaipaipaglairaisaitaiuaivaiwaixaiyaizaiAaiBahuahvahwabIaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaHaaaaafaaaaafaafaaaaaaacGaaaaaaaafaaaaaaaafaaaaaGaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/code/_globalvars/lists/mapping.dm b/code/_globalvars/lists/mapping.dm
index 9a746a952f6..ca4c3bb6d91 100644
--- a/code/_globalvars/lists/mapping.dm
+++ b/code/_globalvars/lists/mapping.dm
@@ -37,6 +37,7 @@ var/list/tdomeadmin = list()
var/list/prisonsecuritywarp = list() //prison security goes to these
var/list/prisonwarped = list() //list of players already warped
var/list/blobstart = list()
+var/list/secequipment = list()
var/list/global_activeturfs
//away missions
diff --git a/code/_onclick/hud/_defines.dm b/code/_onclick/hud/_defines.dm
index 342eeba8d36..5b8174a9650 100644
--- a/code/_onclick/hud/_defines.dm
+++ b/code/_onclick/hud/_defines.dm
@@ -89,6 +89,23 @@
#define ui_alien_health "EAST-1:28,CENTER-1:15" //aliens have the health display where humans have the pressure damage indicator.
#define ui_alienplasmadisplay "EAST-1:28,CENTER-2:15"
+// AI
+
+#define ui_ai_core "SOUTH:6,WEST:16"
+#define ui_ai_camera_list "SOUTH:6,WEST+1:16"
+#define ui_ai_track_with_camera "SOUTH:6,WEST+2:16"
+#define ui_ai_camera_light "SOUTH:6,WEST+3:16"
+#define ui_ai_crew_monitor "SOUTH:6,WEST+4:16"
+#define ui_ai_crew_manifest "SOUTH:6,WEST+5:16"
+#define ui_ai_alerts "SOUTH:6,WEST+6:16"
+#define ui_ai_announcement "SOUTH:6,WEST+7:16"
+#define ui_ai_shuttle "SOUTH:6,WEST+8:16"
+#define ui_ai_state_laws "SOUTH:6,WEST+9:16"
+#define ui_ai_pda_send "SOUTH:6,WEST+10:16"
+#define ui_ai_pda_log "SOUTH:6,WEST+11:16"
+#define ui_ai_take_picture "SOUTH:6,WEST+12:16"
+#define ui_ai_view_images "SOUTH:6,WEST+13:16"
+
//Pop-up inventory
#define ui_shoes "WEST+1:8,SOUTH:5"
diff --git a/code/_onclick/hud/ai.dm b/code/_onclick/hud/ai.dm
new file mode 100644
index 00000000000..9f254878373
--- /dev/null
+++ b/code/_onclick/hud/ai.dm
@@ -0,0 +1,135 @@
+/datum/hud/proc/ai_hud()
+ adding = list()
+ other = list()
+
+ var/obj/screen/using
+
+//AI core
+ using = new /obj/screen()
+ using.name = "AI Core"
+ using.icon = 'icons/mob/screen_ai.dmi'
+ using.icon_state = "ai_core"
+ using.screen_loc = ui_ai_core
+ using.layer = 20
+ adding += using
+
+//Camera list
+ using = new /obj/screen()
+ using.name = "Show Camera List"
+ using.icon = 'icons/mob/screen_ai.dmi'
+ using.icon_state = "camera"
+ using.screen_loc = ui_ai_camera_list
+ using.layer = 20
+ adding += using
+
+//Track
+ using = new /obj/screen()
+ using.name = "Track With Camera"
+ using.icon = 'icons/mob/screen_ai.dmi'
+ using.icon_state = "track"
+ using.screen_loc = ui_ai_track_with_camera
+ using.layer = 20
+ adding += using
+
+//Camera light
+ using = new /obj/screen()
+ using.name = "Toggle Camera Light"
+ using.icon = 'icons/mob/screen_ai.dmi'
+ using.icon_state = "camera_light"
+ using.screen_loc = ui_ai_camera_light
+ using.layer = 20
+ adding += using
+
+//Crew Monitorting
+ using = new /obj/screen()
+ using.name = "Crew Monitorting"
+ using.icon = 'icons/mob/screen_ai.dmi'
+ using.icon_state = "crew_monitor"
+ using.screen_loc = ui_ai_crew_monitor
+ using.layer = 20
+ adding += using
+
+//Crew Manifest
+ using = new /obj/screen()
+ using.name = "Show Crew Manifest"
+ using.icon = 'icons/mob/screen_ai.dmi'
+ using.icon_state = "manifest"
+ using.screen_loc = ui_ai_crew_manifest
+ using.layer = 20
+ adding += using
+
+//Alerts
+ using = new /obj/screen()
+ using.name = "Show Alerts"
+ using.icon = 'icons/mob/screen_ai.dmi'
+ using.icon_state = "alerts"
+ using.screen_loc = ui_ai_alerts
+ using.layer = 20
+ adding += using
+
+//Announcement
+ using = new /obj/screen()
+ using.name = "Announcement"
+ using.icon = 'icons/mob/screen_ai.dmi'
+ using.icon_state = "announcement"
+ using.screen_loc = ui_ai_announcement
+ using.layer = 20
+ adding += using
+
+//Shuttle
+ using = new /obj/screen()
+ using.name = "Call Emergency Shuttle"
+ using.icon = 'icons/mob/screen_ai.dmi'
+ using.icon_state = "call_shuttle"
+ using.screen_loc = ui_ai_shuttle
+ using.layer = 20
+ adding += using
+
+//Laws
+ using = new /obj/screen()
+ using.name = "State Laws"
+ using.icon = 'icons/mob/screen_ai.dmi'
+ using.icon_state = "state_laws"
+ using.screen_loc = ui_ai_state_laws
+ using.layer = 20
+ adding += using
+
+//PDA message
+ using = new /obj/screen()
+ using.name = "PDA - Send Message"
+ using.icon = 'icons/mob/screen_ai.dmi'
+ using.icon_state = "pda_send"
+ using.screen_loc = ui_ai_pda_send
+ using.layer = 20
+ adding += using
+
+//PDA log
+ using = new /obj/screen()
+ using.name = "PDA - Show Message Log"
+ using.icon = 'icons/mob/screen_ai.dmi'
+ using.icon_state = "pda_receive"
+ using.screen_loc = ui_ai_pda_log
+ using.layer = 20
+ adding += using
+
+//Take image
+ using = new /obj/screen()
+ using.name = "Take Image"
+ using.icon = 'icons/mob/screen_ai.dmi'
+ using.icon_state = "take_picture"
+ using.screen_loc = ui_ai_take_picture
+ using.layer = 20
+ adding += using
+
+//View images
+ using = new /obj/screen()
+ using.name = "View Images"
+ using.icon = 'icons/mob/screen_ai.dmi'
+ using.icon_state = "view_images"
+ using.screen_loc = ui_ai_view_images
+ using.layer = 20
+ adding += using
+
+ mymob.client.screen += adding + other
+
+ return
\ No newline at end of file
diff --git a/code/_onclick/hud/other_mobs.dm b/code/_onclick/hud/other_mobs.dm
index e1ccf1732a6..c9a188d0c80 100644
--- a/code/_onclick/hud/other_mobs.dm
+++ b/code/_onclick/hud/other_mobs.dm
@@ -13,9 +13,6 @@
mymob.blind.screen_loc = "CENTER-7,CENTER-7"
mymob.blind.layer = 0
-/datum/hud/proc/ai_hud()
- return
-
/datum/hud/proc/blob_hud(ui_style = 'icons/mob/screen_midnight.dmi')
blobpwrdisplay = new /obj/screen()
diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm
index 42e54d75b39..d5e44761d63 100644
--- a/code/_onclick/hud/screen_objects.dm
+++ b/code/_onclick/hud/screen_objects.dm
@@ -290,6 +290,78 @@
if(istype(usr, /mob/living/silicon/robot))
usr:toggle_module(3)
+ if("AI Core")
+ if(isAI(usr))
+ var/mob/living/silicon/ai/AI = usr
+ AI.view_core()
+
+ if("Show Camera List")
+ if(isAI(usr))
+ var/mob/living/silicon/ai/AI = usr
+ var/camera = input(AI) in AI.get_camera_list()
+ AI.ai_camera_list(camera)
+
+ if("Track With Camera")
+ if(isAI(usr))
+ var/mob/living/silicon/ai/AI = usr
+ var/target_name = input(AI) in AI.trackable_mobs()
+ AI.ai_camera_track(target_name)
+
+ if("Toggle Camera Light")
+ if(isAI(usr))
+ var/mob/living/silicon/ai/AI = usr
+ AI.toggle_camera_light()
+
+ if("Crew Monitorting")
+ if(isAI(usr))
+ var/mob/living/silicon/ai/AI = usr
+ crewmonitor(AI)
+
+ if("Show Crew Manifest")
+ if(isAI(usr))
+ var/mob/living/silicon/ai/AI = usr
+ AI.ai_roster()
+
+ if("Show Alerts")
+ if(isAI(usr))
+ var/mob/living/silicon/ai/AI = usr
+ AI.ai_alerts()
+
+ if("Announcement")
+ if(isAI(usr))
+ var/mob/living/silicon/ai/AI = usr
+ AI.announcement()
+
+ if("Call Emergency Shuttle")
+ if(isAI(usr))
+ var/mob/living/silicon/ai/AI = usr
+ AI.ai_call_shuttle()
+
+ if("State Laws")
+ if(isAI(usr))
+ var/mob/living/silicon/ai/AI = usr
+ AI.checklaws()
+
+ if("PDA - Send Message")
+ if(isAI(usr))
+ var/mob/living/silicon/ai/AI = usr
+ AI.cmd_send_pdamesg(usr)
+
+ if("PDA - Show Message Log")
+ if(isAI(usr))
+ var/mob/living/silicon/ai/AI = usr
+ AI.cmd_show_message_log(usr)
+
+ if("Take Image")
+ if(isAI(usr))
+ var/mob/living/silicon/ai/AI = usr
+ AI.aicamera.toggle_camera_mode()
+
+ if("View Images")
+ if(isAI(usr))
+ var/mob/living/silicon/ai/AI = usr
+ AI.aicamera.viewpictures()
+
else
return 0
return 1
diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm
index b9feeaa1124..2df979b541c 100644
--- a/code/controllers/configuration.dm
+++ b/code/controllers/configuration.dm
@@ -54,7 +54,8 @@
var/server
var/banappeals
var/wikiurl = "http://www.tgstation13.org/wiki" // Default wiki link.
- var/forumurl
+ var/forumurl = "http://tgstation13.org/phpBB/index.php" //default forums
+ var/rulesurl = "http://www.tgstation13.org/wiki/Rules" // default rules
var/forbid_singulo_possession = 0
var/useircbot = 0
@@ -76,6 +77,7 @@
var/traitor_scaling_coeff = 6 //how much does the amount of players get divided by to determine traitors
var/changeling_scaling_coeff = 7 //how much does the amount of players get divided by to determine changelings
+ var/security_scaling_coeff = 8 //how much does the amount of players get divided by to determine open security officer positions
var/traitor_objectives_amount = 2
var/protect_roles_from_antagonist = 0// If security and such can be traitor/cult/other
@@ -243,6 +245,8 @@
config.wikiurl = value
if("forumurl")
config.forumurl = value
+ if("rulesurl")
+ config.rulesurl = value
if("guest_jobban")
config.guest_jobban = 1
if("guest_ban")
@@ -346,6 +350,8 @@
config.traitor_scaling_coeff = text2num(value)
if("changeling_scaling_coeff")
config.changeling_scaling_coeff = text2num(value)
+ if("security_scaling_coeff")
+ config.security_scaling_coeff = text2num(value)
if("traitor_objectives_amount")
config.traitor_objectives_amount = text2num(value)
if("probability")
diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm
index 687b9490a46..c3273c5071c 100644
--- a/code/game/gamemodes/traitor/traitor.dm
+++ b/code/game/gamemodes/traitor/traitor.dm
@@ -250,7 +250,10 @@
text += "
"
+ text += "
The code phrases were: [syndicate_code_phrase]
\
+ The code responses were: [syndicate_code_response]
"
world << text
+
return 1
diff --git a/code/game/jobs/job/security.dm b/code/game/jobs/job/security.dm
index b255a90830d..b42d6918433 100644
--- a/code/game/jobs/job/security.dm
+++ b/code/game/jobs/job/security.dm
@@ -152,8 +152,8 @@ Security Officer
department_head = list("Head of Security")
department_flag = ENGSEC
faction = "Station"
- total_positions = 5
- spawn_positions = 5
+ total_positions = 5 //Handled in /datum/controller/occupations/proc/setup_officer_positions()
+ spawn_positions = 5 //Handled in /datum/controller/occupations/proc/setup_officer_positions()
supervisors = "the head of security, and the head of your assigned department (if applicable)"
selection_color = "#ffeeee"
minimal_player_age = 7
diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm
index dc1088e55a3..4b2bc0eabbb 100644
--- a/code/game/jobs/job_controller.dm
+++ b/code/game/jobs/job_controller.dm
@@ -113,7 +113,7 @@ var/global/datum/controller/occupations/job_master
return
-//This proc is called before the level loop of DivideOccupations() and will try to select a head, ignoring ALL non-head preferences for every level until´
+//This proc is called before the level loop of DivideOccupations() and will try to select a head, ignoring ALL non-head preferences for every level until�
//it locates a head or runs out of levels to check
//This is basically to ensure that there's atleast a few heads in the round
/datum/controller/occupations/proc/FillHeadPosition()
@@ -189,6 +189,9 @@ var/global/datum/controller/occupations/job_master
Debug("DO, Len: [unassigned.len]")
if(unassigned.len == 0) return 0
+ //Scale number of open security officer slots to population
+ setup_officer_positions()
+
//Shuffle players and jobs
unassigned = shuffle(unassigned)
@@ -308,6 +311,24 @@ var/global/datum/controller/occupations/job_master
return 1
+/datum/controller/occupations/proc/setup_officer_positions()
+ var/officer_positions = 5 //Number of open security officer positions at round start
+
+ if(config.security_scaling_coeff > 0)
+ officer_positions = min(12, max(5, (unassigned.len/config.security_scaling_coeff))) //Scale between 5 and 12 officers
+ var/datum/job/J = job_master.GetJob("Security Officer")
+ if(J || J.spawn_positions > 0)
+ Debug("Setting open security officer positions to [officer_positions]")
+ J.total_positions = officer_positions
+ J.spawn_positions = officer_positions
+ for(var/i=officer_positions-5, i>0, i--) //Spawn some extra eqipment lockers if we have more than 5 officers
+ if(secequipment.len)
+ var/spawnloc = secequipment[1]
+ new /obj/structure/closet/secure_closet/security(spawnloc)
+ secequipment -= spawnloc
+ else //We ran out of spare locker spawns!
+ break
+
/datum/controller/occupations/proc/LoadJobs(jobsfile) //ran during round setup, reads info from jobs.txt -- Urist
if(!config.load_jobs_from_txt)
return 0
diff --git a/code/game/machinery/bots/bots.dm b/code/game/machinery/bots/bots.dm
index 3548b15de45..5c0c30aecc1 100644
--- a/code/game/machinery/bots/bots.dm
+++ b/code/game/machinery/bots/bots.dm
@@ -80,7 +80,7 @@
if(!locked)
open = !open
user << "Maintenance panel is now [src.open ? "opened" : "closed"]."
- else if(istype(W, /obj/item/weapon/weldingtool))
+ else if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != "harm")
if(health < maxhealth)
if(open)
health = min(maxhealth, health+10)
diff --git a/code/game/machinery/bots/secbot.dm b/code/game/machinery/bots/secbot.dm
index 42c365e5b6c..278ed06a1db 100644
--- a/code/game/machinery/bots/secbot.dm
+++ b/code/game/machinery/bots/secbot.dm
@@ -206,7 +206,9 @@ Auto Patrol: []"},
user << "\red Access denied."
else
..()
- if(!istype(W, /obj/item/weapon/screwdriver) && !istype(W, /obj/item/weapon/weldingtool) && (W.force) && (!src.target)) // Added check for welding tool to fix #2432. Welding tool behavior is handled in superclass.
+ if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != "harm") // Any intent but harm will heal, so we shouldn't get angry.
+ return
+ if(!istype(W, /obj/item/weapon/screwdriver) && (W.force) && (!src.target) ) // Added check for welding tool to fix #2432. Welding tool behavior is handled in superclass.
threatlevel = user.assess_threat(src)
threatlevel += 6
if(threatlevel > 0)
diff --git a/code/game/machinery/camera/tracking.dm b/code/game/machinery/camera/tracking.dm
index f588e5146a3..3b99e47fd8e 100644
--- a/code/game/machinery/camera/tracking.dm
+++ b/code/game/machinery/camera/tracking.dm
@@ -22,9 +22,6 @@
/mob/living/silicon/ai/proc/ai_camera_list(var/camera in get_camera_list())
- set category = "AI Commands"
- set name = "Show Camera List"
-
if(src.stat == 2)
src << "You can't list the cameras because you are dead!"
return
@@ -101,10 +98,6 @@
return targets
/mob/living/silicon/ai/proc/ai_camera_track(var/target_name in trackable_mobs())
- set category = "AI Commands"
- set name = "Track With Camera"
- set desc = "Select who you would like to track."
-
if(src.stat == 2)
src << "You can't track with camera because you are dead!"
return
diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm
index bd605edfc5a..377d7777b0f 100644
--- a/code/game/objects/effects/landmarks.dm
+++ b/code/game/objects/effects/landmarks.dm
@@ -55,7 +55,10 @@
blobstart += loc
qdel(src)
return
-
+ if("secequipment")
+ secequipment += loc
+ qdel(src)
+ return
if("xeno_spawn")
xeno_spawn += loc
qdel(src)
diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm
index 215acc75525..60379ad6804 100644
--- a/code/game/objects/items/devices/PDA/PDA.dm
+++ b/code/game/objects/items/devices/PDA/PDA.dm
@@ -972,19 +972,17 @@ var/global/list/obj/item/device/pda/PDAs = list()
//AI verb and proc for sending PDA messages.
-/mob/living/silicon/ai/verb/cmd_send_pdamesg()
- set category = "AI Commands"
- set name = "PDA - Send Message"
+/mob/living/silicon/ai/proc/cmd_send_pdamesg(mob/user as mob)
var/list/names = list()
var/list/plist = list()
var/list/namecounts = list()
- if(usr.stat == 2)
- usr << "You can't send PDA messages because you are dead!"
+ if(user.stat == 2)
+ user << "You can't send PDA messages because you are dead!"
return
if(src.aiPDA.toff)
- usr << "Turn on your receiver in order to send messages."
+ user << "Turn on your receiver in order to send messages."
return
for (var/obj/item/device/pda/P in get_viewable_pdas())
@@ -1003,7 +1001,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
plist[text("[name]")] = P
- var/c = input(usr, "Please select a PDA") as null|anything in sortList(plist)
+ var/c = input(user, "Please select a PDA") as null|anything in sortList(plist)
if (!c)
return
@@ -1037,17 +1035,15 @@ var/global/list/obj/item/device/pda/PDAs = list()
else
usr << "You do not have a PDA. You should make an issue report about this."
-/mob/living/silicon/ai/verb/cmd_show_message_log()
- set category = "AI Commands"
- set name = "PDA - Show Message Log"
- if(usr.stat == 2)
- usr << "You can't do that because you are dead!"
+/mob/living/silicon/ai/proc/cmd_show_message_log(mob/user as mob)
+ if(user.stat == 2)
+ user << "You can't do that because you are dead!"
return
if(!isnull(aiPDA))
var/HTML = "