From 69f7e047192c7b048f5f9c91c93bd772d50737d3 Mon Sep 17 00:00:00 2001 From: Markolie Date: Wed, 29 Jul 2015 00:12:44 +0200 Subject: [PATCH] Prison break refactor, Requests Console refactor --- _maps/map_files/cyberiad/cyberiad.dmm | 62 ++-- code/defines/procs/announce.dm | 5 +- code/game/area/Space Station 13 areas.dm | 16 + code/game/area/areas.dm | 8 + code/game/machinery/doors/airlock.dm | 15 +- code/game/machinery/machinery.dm | 5 + code/game/machinery/requests_console.dm | 404 +++++++---------------- code/modules/events/event_container.dm | 5 +- code/modules/events/money_hacker.dm | 44 +-- code/modules/events/prison_break.dm | 97 +++--- code/modules/power/apc.dm | 7 +- code/modules/research/message_server.dm | 25 ++ nano/templates/request_console.tmpl | 122 +++++++ 13 files changed, 409 insertions(+), 406 deletions(-) create mode 100644 nano/templates/request_console.tmpl diff --git a/_maps/map_files/cyberiad/cyberiad.dmm b/_maps/map_files/cyberiad/cyberiad.dmm index 7671006c782..d7488daeb9e 100644 --- a/_maps/map_files/cyberiad/cyberiad.dmm +++ b/_maps/map_files/cyberiad/cyberiad.dmm @@ -129,7 +129,7 @@ "acy" = (/obj/structure/grille,/obj/structure/sign/securearea{name = "\improper ARMORY"; pixel_y = 32},/turf/space,/area/space) "acz" = (/obj/structure/grille,/turf/space,/area/space) "acA" = (/obj/structure/closet/secure_closet/hos,/turf/simulated/floor{icon_state = "dark"},/area/security/hos) -"acB" = (/obj/machinery/computer/security{network = list("SS13","Research Outpost","Mining Outpost")},/obj/machinery/requests_console{announcementConsole = 1; department = "Head of Security"; departmentType = 5; name = "Head of Security RC"; pixel_y = 30},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) +"acB" = (/obj/machinery/computer/security{network = list("SS13","Research Outpost","Mining Outpost")},/obj/machinery/requests_console{announcementConsole = 1; department = "Head of Security's Desk"; departmentType = 5; name = "Head of Security Requests Console"; pixel_y = 30},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) "acC" = (/obj/machinery/computer/secure_data,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) "acD" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/red,/obj/item/weapon/folder/red,/obj/item/weapon/cartridge/detective,/obj/item/device/megaphone,/turf/simulated/floor{icon_state = "dark"},/area/security/hos) "acE" = (/obj/machinery/photocopier,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "dark"},/area/security/hos) @@ -900,7 +900,7 @@ "arp" = (/obj/machinery/light_switch{pixel_x = -25; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) "arq" = (/turf/simulated/floor/carpet,/area/security/detectives_office) "arr" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/carpet,/area/security/detectives_office) -"ars" = (/obj/structure/table/woodentable,/obj/machinery/requests_console{pixel_x = 30},/obj/item/device/camera{name = "detectives camera"; desc = "A one use - polaroid camera. 30 photos left."; pixel_x = 0; pixel_y = 0; pictures_left = 30},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) +"ars" = (/obj/structure/table/woodentable,/obj/machinery/requests_console{name = "Detective Requests Console"; pixel_x = 30},/obj/item/device/camera{name = "detectives camera"; desc = "A one use - polaroid camera. 30 photos left."; pixel_x = 0; pixel_y = 0; pictures_left = 30},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office) "art" = (/obj/effect/decal/cleanable/blood/oil/streak,/turf/simulated/floor/plating,/area/maintenance/fsmaint) "aru" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "security_airlock"; name = "interior access button"; pixel_x = 20; pixel_y = 20; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"},/turf/simulated/floor/plating,/area/maintenance/fsmaint) "arv" = (/obj/machinery/door/airlock/external{frequency = 1379; icon_state = "door_locked"; id_tag = "security_inner"; locked = 1; name = "Engineering External Access"; req_access = null; req_access_txt = "13"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fsmaint) @@ -1353,7 +1353,7 @@ "aAa" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "neutral"; dir = 9},/area/crew_quarters/fitness) "aAb" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor{icon_state = "neutral"; dir = 5},/area/crew_quarters/fitness) "aAc" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/fitness) -"aAd" = (/obj/machinery/requests_console{department = "Crew Quarters"; pixel_y = 30},/obj/machinery/camera/xray{c_tag = "Dormitories North"; network = list("SS13")},/obj/machinery/vending/cigarette,/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/fitness) +"aAd" = (/obj/machinery/requests_console{department = "Crew Quarters"; name = "Crew Quarters Requests Console"; pixel_y = 30},/obj/machinery/camera/xray{c_tag = "Dormitories North"; network = list("SS13")},/obj/machinery/vending/cigarette,/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/fitness) "aAe" = (/obj/machinery/vending/cola,/obj/machinery/light{dir = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/fitness) "aAf" = (/obj/machinery/vending/snack,/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/fitness) "aAg" = (/obj/machinery/vending/coffee,/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/fitness) @@ -1445,7 +1445,7 @@ "aBO" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/stamp/law,/obj/machinery/light,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/carpet,/area/magistrateoffice) "aBP" = (/obj/structure/table/reinforced,/obj/item/weapon/book/manual/security_space_law,/turf/simulated/floor/carpet,/area/magistrateoffice) "aBQ" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/ai_monitored/storage/eva) -"aBR" = (/obj/machinery/requests_console{announcementConsole = 0; department = "IAA"; departmentType = 0; name = "IAA RC"; pixel_y = -30},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/lawoffice) +"aBR" = (/obj/machinery/requests_console{department = "Internal Affairs Office"; name = "Internal Affairs Requests Console"; pixel_y = -30},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/lawoffice) "aBS" = (/obj/structure/table/reinforced,/obj/item/weapon/folder{pixel_x = -4},/obj/item/weapon/folder/red{pixel_y = 3},/obj/item/weapon/folder/blue{pixel_x = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/lawoffice) "aBT" = (/obj/structure/table/reinforced,/obj/item/weapon/pen/blue{pixel_x = -5; pixel_y = -1},/obj/item/weapon/pen/red{pixel_x = -1; pixel_y = 3},/obj/item/ashtray/plastic{pixel_x = 4; pixel_y = 6},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/lawoffice) "aBU" = (/obj/structure/table/reinforced,/obj/item/device/flashlight/lamp,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor{tag = "icon-cult"; icon_state = "cult"; dir = 2},/area/lawoffice) @@ -1797,7 +1797,7 @@ "aIC" = (/obj/machinery/gateway{dir = 8},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/gateway) "aID" = (/obj/machinery/gateway/centerstation,/turf/simulated/floor{icon_state = "dark"},/area/gateway) "aIE" = (/obj/machinery/gateway{dir = 4},/turf/simulated/floor{icon_state = "vault"; dir = 8},/area/gateway) -"aIF" = (/obj/machinery/requests_console{department = "EVA"; pixel_x = -32; pixel_y = 0},/obj/structure/table/reinforced,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/device/multitool,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) +"aIF" = (/obj/machinery/requests_console{department = "EVA"; name = "EVA Requests Console"; pixel_x = -32; pixel_y = 0},/obj/structure/table/reinforced,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/device/multitool,/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/ai_monitored/storage/eva) "aIG" = (/turf/simulated/floor,/area/ai_monitored/storage/eva) "aIH" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/ai_monitored/storage/eva) "aII" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/table/reinforced,/obj/item/stack/sheet/rglass{amount = 50},/obj/item/stack/rods{amount = 50},/obj/structure/extinguisher_cabinet{pixel_x = 27; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/ai_monitored/storage/eva) @@ -1903,7 +1903,7 @@ "aKE" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/storage/primary) "aKF" = (/obj/structure/table,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/item/weapon/wirecutters,/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/turf/simulated/floor,/area/storage/primary) "aKG" = (/obj/structure/table,/obj/machinery/alarm{pixel_y = 23},/obj/item/device/t_scanner,/turf/simulated/floor,/area/storage/primary) -"aKH" = (/obj/structure/table,/obj/machinery/camera{c_tag = "Primary Tool Storage"},/obj/machinery/requests_console{department = "Tool Storage"; departmentType = 0; pixel_y = 30},/obj/item/device/assembly/igniter{pixel_x = -8; pixel_y = -4},/obj/item/device/assembly/igniter,/obj/item/weapon/screwdriver{pixel_y = 16},/turf/simulated/floor,/area/storage/primary) +"aKH" = (/obj/structure/table,/obj/machinery/camera{c_tag = "Primary Tool Storage"},/obj/machinery/requests_console{department = "Tool Storage"; name = "Tool Storage Requests Console"; pixel_y = 30},/obj/item/device/assembly/igniter{pixel_x = -8; pixel_y = -4},/obj/item/device/assembly/igniter,/obj/item/weapon/screwdriver{pixel_y = 16},/turf/simulated/floor,/area/storage/primary) "aKI" = (/obj/structure/table,/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20},/obj/item/device/assembly/signaler,/obj/item/device/assembly/signaler,/obj/item/device/multitool,/obj/item/device/multitool{pixel_x = 4},/turf/simulated/floor,/area/storage/primary) "aKJ" = (/obj/structure/table,/obj/machinery/light_switch{pixel_y = 28},/obj/machinery/cell_charger,/obj/item/weapon/stock_parts/cell/high,/turf/simulated/floor,/area/storage/primary) "aKK" = (/obj/structure/table,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor,/area/storage/primary) @@ -2128,7 +2128,7 @@ "aOV" = (/turf/simulated/wall,/area/chapel/office) "aOW" = (/obj/machinery/door/airlock/maintenance{name = "Crematorium Maintenance"; req_access_txt = "27"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/fsmaint2) "aOX" = (/obj/structure/closet/wardrobe/chaplain_black,/obj/item/device/radio/intercom{pixel_y = 25},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) -"aOY" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/light/small{dir = 1},/obj/machinery/requests_console{department = "Chapel"; departmentType = 2; pixel_y = 30},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) +"aOY" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/light/small{dir = 1},/obj/machinery/requests_console{department = "Chapel"; name = "Chapel Requests Console"; departmentType = 2; pixel_y = 30},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) "aOZ" = (/obj/machinery/camera{c_tag = "Chapel Chaplain's Office"; dir = 2; network = list("SS13")},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) "aPa" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/machinery/alarm{pixel_y = 25},/turf/simulated/floor{icon_state = "grimy"},/area/chapel/office) "aPb" = (/obj/structure/closet/coffin,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/chapel/office) @@ -2324,7 +2324,7 @@ "aSJ" = (/turf/simulated/shuttle/wall{icon_state = "swall13"; dir = 2},/area/shuttle/arrival/station) "aSK" = (/obj/machinery/light,/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) "aSL" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) -"aSM" = (/obj/machinery/requests_console{department = "Arrival shuttle"; pixel_y = -30},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) +"aSM" = (/obj/machinery/requests_console{department = "Arrival Shuttle"; name = "Arrival Shuttle Requests Console"; pixel_y = -30},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station) "aSN" = (/obj/structure/shuttle/engine/propulsion{icon_state = "burst_l"; dir = 8},/turf/space,/area/shuttle/arrival/station) "aSO" = (/obj/effect/spawner/window/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/medical/chemistry) "aSP" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/hallway/secondary/entry) @@ -2367,7 +2367,7 @@ "aTA" = (/turf/simulated/floor{icon_state = "neutral"; dir = 4},/area/hallway/primary/central/ne) "aTB" = (/obj/machinery/light{dir = 1},/obj/machinery/vending/boozeomat,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) "aTC" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) -"aTD" = (/obj/machinery/requests_console{announcementConsole = 0; department = "Bar"; departmentType = 2; name = "Bar RC"; pixel_x = 0; pixel_y = 30},/obj/structure/table/reinforced,/obj/machinery/chem_dispenser/beer,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) +"aTD" = (/obj/machinery/requests_console{department = "Bar"; name = "Bar Requests Console"; departmentType = 2; pixel_x = 0; pixel_y = 30},/obj/structure/table/reinforced,/obj/machinery/chem_dispenser/beer,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) "aTE" = (/obj/item/device/radio/intercom{pixel_y = 25},/obj/machinery/camera{c_tag = "Bar North"; dir = 2; network = list("SS13")},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/structure/table/reinforced,/obj/machinery/chem_dispenser/soda,/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) "aTF" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/food/drinks/flask/barflask,/obj/item/weapon/reagent_containers/food/drinks/flask/barflask,/obj/machinery/status_display{pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "grimy"},/area/crew_quarters/bar) "aTG" = (/obj/machinery/power/apc{dir = 1; name = "Bar APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/stool/bed/chair/comfy/brown{dir = 4},/turf/simulated/floor/carpet,/area/crew_quarters/bar) @@ -2657,7 +2657,7 @@ "aZe" = (/obj/machinery/vending/hydronutrients,/turf/simulated/floor{icon_state = "dark"},/area/hydroponics) "aZf" = (/obj/machinery/vending/hydroseeds,/obj/machinery/camera{c_tag = "Hydroponics North"; network = list("SS13")},/turf/simulated/floor{icon_state = "dark"},/area/hydroponics) "aZg" = (/obj/machinery/biogenerator,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor{icon_state = "dark"},/area/hydroponics) -"aZh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/requests_console{department = "Hydroponics"; departmentType = 2; pixel_x = 0; pixel_y = 30},/obj/structure/disposalpipe/trunk,/obj/machinery/disposal,/turf/simulated/floor{icon_state = "dark"},/area/hydroponics) +"aZh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/requests_console{department = "Hydroponics"; departmentType = 2; name = "Hydroponics Requests Console"; pixel_x = 0; pixel_y = 30},/obj/structure/disposalpipe/trunk,/obj/machinery/disposal,/turf/simulated/floor{icon_state = "dark"},/area/hydroponics) "aZi" = (/obj/machinery/floodlight,/turf/simulated/floor{icon_state = "dark"},/area/hydroponics) "aZj" = (/obj/structure/bookcase{name = "bookcase (Religious)"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/turf/simulated/floor/wood,/area/library) "aZk" = (/obj/structure/bookcase{name = "bookcase (Religious)"},/turf/simulated/floor/wood,/area/library) @@ -3019,7 +3019,7 @@ "bgc" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/plating,/area/maintenance/port) "bgd" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/plating,/area/maintenance/port) "bge" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/port) -"bgf" = (/obj/structure/closet/wardrobe/grey,/obj/machinery/requests_console{department = "Locker Room"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor,/area/crew_quarters/locker) +"bgf" = (/obj/structure/closet/wardrobe/grey,/obj/machinery/requests_console{department = "Locker Room"; name = "Locker Room Requests Console"; pixel_x = -32; pixel_y = 0},/turf/simulated/floor,/area/crew_quarters/locker) "bgg" = (/obj/structure/table,/obj/item/clothing/head/soft/grey{pixel_x = -2; pixel_y = 3},/turf/simulated/floor,/area/crew_quarters/locker) "bgh" = (/obj/structure/table,/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/crew_quarters/locker) "bgi" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1},/turf/simulated/floor,/area/crew_quarters/locker) @@ -3127,7 +3127,7 @@ "big" = (/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -32},/obj/machinery/light_switch{pixel_x = -5; pixel_y = -25},/obj/machinery/light,/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge) "bih" = (/obj/structure/closet/fireaxecabinet{pixel_y = -32},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge) "bii" = (/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge) -"bij" = (/obj/machinery/camera{c_tag = "Bridge Central"; dir = 1; network = list("SS13")},/obj/machinery/requests_console{announcementConsole = 1; department = "Bridge"; departmentType = 5; name = "Bridge RC"; pixel_y = -30},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge) +"bij" = (/obj/machinery/camera{c_tag = "Bridge Central"; dir = 1; network = list("SS13")},/obj/machinery/requests_console{announcementConsole = 1; department = "Bridge"; departmentType = 5; name = "Bridge Requests Console"; pixel_y = -30},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge) "bik" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge) "bil" = (/obj/machinery/turretid/stun{control_area = "\improper AI Upload Chamber"; name = "AI Upload Turret Control"; pixel_x = 0; pixel_y = -24; req_access = list(75)},/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge) "bim" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/bridge) @@ -3151,7 +3151,7 @@ "biE" = (/obj/structure/stool/bed/chair/wood/wings{tag = "icon-wooden_chair_wings (EAST)"; icon_state = "wooden_chair_wings"; dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor/wood,/area/crew_quarters/bar) "biF" = (/obj/structure/table/woodentable,/obj/item/weapon/kitchen/utensil/fork,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/wood,/area/crew_quarters/bar) "biG" = (/obj/effect/landmark/start{name = "Chef"},/turf/simulated/floor{dir = 2; icon_state = "cafeteria"; tag = "icon-cafeteria (NORTHEAST)"},/area/crew_quarters/kitchen) -"biH" = (/obj/structure/table,/obj/machinery/reagentgrinder,/obj/machinery/requests_console{department = "Kitchen"; departmentType = 2; pixel_x = 30; pixel_y = 0},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) +"biH" = (/obj/structure/table,/obj/machinery/reagentgrinder,/obj/machinery/requests_console{department = "Kitchen"; name = "Kitchen Requests Console"; departmentType = 2; pixel_x = 30; pixel_y = 0},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen) "biI" = (/obj/machinery/portable_atmospherics/hydroponics,/obj/machinery/light{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/hydroponics) "biJ" = (/obj/machinery/portable_atmospherics/hydroponics,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "dark"},/area/hydroponics) "biK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/sortjunction{dir = 2; icon_state = "pipe-j2s"; sortType = 16},/turf/simulated/floor,/area/hallway/primary/starboard/east) @@ -3628,7 +3628,7 @@ "brN" = (/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central/west) "brO" = (/obj/machinery/power/apc{dir = 4; name = "Central Hall West APC"; pixel_x = 27; pixel_y = 2},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/central/west) "brP" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/wood,/area/bridge/meeting_room) -"brQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/requests_console{announcementConsole = 1; department = "Bridge"; departmentType = 5; name = "Bridge RC"; pixel_y = -30},/turf/simulated/floor/wood,/area/bridge/meeting_room) +"brQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/requests_console{announcementConsole = 1; department = "Bridge"; departmentType = 5; name = "Bridge Requests Console"; pixel_y = -30},/turf/simulated/floor/wood,/area/bridge/meeting_room) "brR" = (/obj/machinery/vending/cigarette,/turf/simulated/floor/wood,/area/bridge/meeting_room) "brS" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/wall/r_wall,/area/turret_protected/ai_upload) "brT" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/wall/r_wall,/area/turret_protected/ai_upload) @@ -3703,7 +3703,7 @@ "btk" = (/obj/machinery/light{dir = 1; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravitygenerator) "btl" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "dark"},/area/engine/gravitygenerator) "btm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/wall/r_wall,/area/crew_quarters/captain) -"btn" = (/obj/machinery/requests_console{announcementConsole = 1; department = "Captain's Desk"; departmentType = 5; name = "Captain RC"; pixel_x = -30; pixel_y = 0},/obj/structure/filingcabinet,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/wood,/area/crew_quarters/captain) +"btn" = (/obj/machinery/requests_console{announcementConsole = 1; department = "Captain's Desk"; departmentType = 5; name = "Captain Requests Console"; pixel_x = -30; pixel_y = 0},/obj/structure/filingcabinet,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/wood,/area/crew_quarters/captain) "bto" = (/obj/structure/stool/bed/chair/comfy/brown{dir = 4},/obj/effect/landmark/start{name = "Captain"},/turf/simulated/floor/wood,/area/crew_quarters/captain) "btp" = (/obj/machinery/computer/communications,/turf/simulated/floor/wood,/area/crew_quarters/captain) "btq" = (/obj/structure/table/woodentable,/obj/item/weapon/book/manual/security_space_law,/obj/item/weapon/coin/plasma,/obj/item/device/megaphone,/turf/simulated/floor/wood,/area/crew_quarters/captain) @@ -3861,7 +3861,7 @@ "bwm" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/port) "bwn" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/port) "bwo" = (/obj/structure/table,/obj/item/clothing/head/soft,/obj/item/weapon/stamp/granted{pixel_x = -3; pixel_y = 3},/obj/item/clothing/head/soft,/turf/simulated/floor,/area/quartermaster/storage) -"bwp" = (/obj/structure/table,/obj/item/weapon/hand_labeler,/obj/machinery/requests_console{department = "Cargo Bay"; departmentType = 2; pixel_x = 0; pixel_y = 30},/obj/item/weapon/stamp/granted{pixel_x = -3; pixel_y = 3},/obj/item/weapon/hand_labeler,/turf/simulated/floor,/area/quartermaster/storage) +"bwp" = (/obj/structure/table,/obj/item/weapon/hand_labeler,/obj/machinery/requests_console{department = "Cargo Bay"; departmentType = 2; name = "Cargo Requests Console"; pixel_x = 0; pixel_y = 30},/obj/item/weapon/stamp/granted{pixel_x = -3; pixel_y = 3},/obj/item/weapon/hand_labeler,/turf/simulated/floor,/area/quartermaster/storage) "bwq" = (/obj/structure/table,/obj/machinery/cell_charger,/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/floor,/area/quartermaster/storage) "bwr" = (/obj/machinery/camera{c_tag = "Cargo Bay North"},/obj/structure/closet/secure_closet/cargotech,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor,/area/quartermaster/storage) "bws" = (/obj/structure/closet/secure_closet/cargotech,/turf/simulated/floor,/area/quartermaster/storage) @@ -4309,7 +4309,7 @@ "bES" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id_tag = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "bot"},/area/medical/research{name = "Research Division"}) "bET" = (/obj/machinery/door_control{id = "rdlab2"; name = "Research and Development Lab Shutters Control"; pixel_x = -24; pixel_y = -24; req_access_txt = "47"},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "bEU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/table,/obj/machinery/cell_charger,/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) -"bEV" = (/obj/structure/table,/obj/machinery/requests_console{department = "Cargo Bay"; departmentType = 2; pixel_y = 30},/obj/item/stack/tape_roll,/turf/simulated/floor{icon_state = "arrival"; dir = 1},/area/quartermaster/office) +"bEV" = (/obj/structure/table,/obj/machinery/requests_console{department = "Cargo Bay"; name = "Cargo Requests Console"; departmentType = 2; pixel_y = 30},/obj/item/stack/tape_roll,/turf/simulated/floor{icon_state = "arrival"; dir = 1},/area/quartermaster/office) "bEW" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "bEX" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/item/stack/cable_coil,/obj/item/stack/cable_coil,/obj/item/weapon/stock_parts/scanning_module{pixel_x = 0; pixel_y = 0},/obj/item/weapon/stock_parts/scanning_module{pixel_x = 2; pixel_y = 3},/obj/machinery/light_switch{pixel_y = -25},/obj/structure/table/glass,/turf/simulated/floor{icon_state = "white"},/area/toxins/lab) "bEY" = (/obj/machinery/light/small{dir = 1},/obj/structure/disposalpipe/sortjunction{dir = 2; icon_state = "pipe-j2s"; sortType = 14},/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/asmaint) @@ -4407,7 +4407,7 @@ "bGM" = (/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/quartermaster/storage) "bGN" = (/turf/simulated/floor{icon_state = "delivery"},/area/quartermaster/storage) "bGO" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "QM #1"},/obj/machinery/bot/mulebot{beacon_freq = 1400; home_destination = "QM #1"; suffix = "#1"},/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/storage) -"bGP" = (/obj/structure/table,/obj/machinery/requests_console{department = "Cargo Bay"; departmentType = 2; pixel_x = -30; pixel_y = 0},/obj/machinery/camera{c_tag = "Cargo Office"; dir = 4; network = list("SS13")},/obj/item/stack/sheet/glass{amount = 50; pixel_x = 3; pixel_y = 3},/obj/item/stack/sheet/metal{amount = 50},/obj/item/device/multitool,/turf/simulated/floor,/area/quartermaster/office) +"bGP" = (/obj/structure/table,/obj/machinery/requests_console{department = "Cargo Bay"; name = "Cargo Requests Console"; departmentType = 2; pixel_x = -30; pixel_y = 0},/obj/machinery/camera{c_tag = "Cargo Office"; dir = 4; network = list("SS13")},/obj/item/stack/sheet/glass{amount = 50; pixel_x = 3; pixel_y = 3},/obj/item/stack/sheet/metal{amount = 50},/obj/item/device/multitool,/turf/simulated/floor,/area/quartermaster/office) "bGQ" = (/obj/structure/filingcabinet/filingcabinet,/turf/simulated/floor,/area/quartermaster/office) "bGR" = (/obj/effect/spawner/window/reinforced,/obj/structure/cable,/turf/simulated/floor/plating,/area/engine/chiefs_office) "bGS" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/office) @@ -4680,7 +4680,7 @@ "bLZ" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/hallway/primary/central/sw) "bMa" = (/obj/machinery/door/firedoor{dir = 8; name = "Firelock West"},/obj/machinery/door/poddoor/shutters{density = 0; dir = 8; icon_state = "shutter0"; id_tag = "hopqueue"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/hallway/primary/central/sw) "bMb" = (/obj/structure/filingcabinet/chestdrawer,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor{icon_state = "blue"; dir = 10},/area/crew_quarters/heads) -"bMc" = (/obj/machinery/requests_console{announcementConsole = 1; department = "Head of Personnel's Desk"; departmentType = 5; name = "Head of Personnel RC"; pixel_y = -30},/obj/machinery/camera{c_tag = "Head of Personnel's Office"; dir = 1; network = list("SS13")},/obj/structure/flora/kirbyplants,/turf/simulated/floor,/area/crew_quarters/heads) +"bMc" = (/obj/machinery/requests_console{announcementConsole = 1; department = "Head of Personnel's Desk"; departmentType = 5; name = "Head of Personnel Requests Console"; pixel_y = -30},/obj/machinery/camera{c_tag = "Head of Personnel's Office"; dir = 1; network = list("SS13")},/obj/structure/flora/kirbyplants,/turf/simulated/floor,/area/crew_quarters/heads) "bMd" = (/obj/structure/table,/obj/machinery/photocopier/faxmachine{department = "Head of Personnel's Office"},/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor,/area/crew_quarters/heads) "bMe" = (/obj/machinery/light_switch{pixel_x = 27},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/crew_quarters/heads) "bMf" = (/obj/machinery/blackbox_recorder,/turf/simulated/floor/bluegrid,/area/server) @@ -4784,7 +4784,7 @@ "bNZ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2) "bOa" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2) "bOb" = (/obj/machinery/alarm{pixel_y = 25},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2) -"bOc" = (/obj/machinery/light{dir = 1},/obj/machinery/requests_console{announcementConsole = 0; department = "Medbay"; departmentType = 1; name = "Medbay Requests Console"; pixel_x = 0; pixel_y = 30; pixel_z = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/door/firedoor,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2) +"bOc" = (/obj/machinery/light{dir = 1},/obj/machinery/requests_console{department = "Medbay"; departmentType = 1; name = "Medbay Requests Console"; pixel_x = 0; pixel_y = 30; pixel_z = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/door/firedoor,/turf/simulated/floor{tag = "icon-whiteblue (NORTH)"; icon_state = "whiteblue"; dir = 1},/area/medical/medbay2) "bOd" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bOe" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{tag = "icon-whiteblue (EAST)"; icon_state = "whiteblue"; dir = 4},/area/medical/medbay2) "bOf" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/cryo) @@ -4824,7 +4824,7 @@ "bON" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{d2 = 4; icon_state = "0-4"},/turf/simulated/floor,/area/quartermaster/miningdock) "bOO" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/quartermaster/miningdock) "bOP" = (/obj/structure/rack{dir = 1},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/machinery/light{dir = 1},/obj/machinery/light_switch{pixel_y = 24},/turf/simulated/floor,/area/quartermaster/miningdock) -"bOQ" = (/obj/machinery/requests_console{department = "Cargo Bay"; departmentType = 2; pixel_x = -30; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1},/turf/simulated/floor,/area/quartermaster/qm) +"bOQ" = (/obj/machinery/requests_console{department = "Cargo Bay"; name = "Cargo Requests Console"; departmentType = 2; pixel_x = -30; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1},/turf/simulated/floor,/area/quartermaster/qm) "bOR" = (/obj/structure/stool/bed/chair/office/dark,/obj/effect/landmark/start{name = "Quartermaster"},/turf/simulated/floor,/area/quartermaster/qm) "bOS" = (/turf/simulated/floor,/area/quartermaster/qm) "bOT" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/quartermaster/qm) @@ -4903,7 +4903,7 @@ "bQo" = (/turf/simulated/floor{dir = 2; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTH)"},/area/crew_quarters/hor) "bQp" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{dir = 6; icon_state = "warnwhite"; tag = "icon-warnwhite (NORTHEAST)"},/area/crew_quarters/hor) "bQq" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/maintenance/asmaint2) -"bQr" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/item/weapon/pen,/obj/machinery/requests_console{department = "Cargo Bay"; departmentType = 2; pixel_x = -30; pixel_y = 0},/turf/simulated/floor,/area/quartermaster/miningdock) +"bQr" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/item/weapon/pen,/obj/machinery/requests_console{department = "Cargo Bay"; name = "Cargo Requests Console"; departmentType = 2; pixel_x = -30; pixel_y = 0},/turf/simulated/floor,/area/quartermaster/miningdock) "bQs" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/effect/landmark/start{name = "Shaft Miner"},/turf/simulated/floor,/area/quartermaster/miningdock) "bQt" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/quartermaster/miningdock) "bQu" = (/obj/structure/rack{dir = 1},/obj/item/weapon/pickaxe{pixel_x = 5},/obj/item/weapon/shovel{pixel_x = -5},/obj/item/weapon/storage/belt/utility,/turf/simulated/floor,/area/quartermaster/miningdock) @@ -5272,7 +5272,7 @@ "bXt" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8; initialize_directions = 11; level = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2) "bXu" = (/obj/machinery/camera{c_tag = "Medbay Port Corridor"; dir = 8; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/disposal,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor{dir = 4; icon_state = "whiteblue"; tag = "icon-whitehall (WEST)"},/area/medical/medbay2) "bXv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/wall/r_wall,/area/medical/cmo) -"bXw" = (/obj/machinery/camera{c_tag = "Medbay Chief Medical Officer's Office"; dir = 4; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment,/obj/machinery/light_switch{pixel_x = -23; pixel_y = 9},/obj/machinery/requests_console{announcementConsole = 1; department = "Chief Medical Officer's Desk"; departmentType = 5; name = "Chief Medical Officer RC"; pixel_x = -30; pixel_y = 0},/obj/machinery/hologram/holopad,/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/cmo) +"bXw" = (/obj/machinery/camera{c_tag = "Medbay Chief Medical Officer's Office"; dir = 4; network = list("SS13")},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment,/obj/machinery/light_switch{pixel_x = -23; pixel_y = 9},/obj/machinery/requests_console{announcementConsole = 1; department = "Chief Medical Officer's Desk"; departmentType = 5; name = "Chief Medical Officer Requests Console"; pixel_x = -30; pixel_y = 0},/obj/machinery/hologram/holopad,/turf/simulated/floor{tag = "icon-whiteblue (WEST)"; icon_state = "whiteblue"; dir = 8},/area/medical/cmo) "bXx" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/door_control{id = "Biohazard_medi"; name = "Emergency Medbay Quarantine"; pixel_y = 7},/obj/machinery/door_control{id = "cmooffice"; name = "Privacy Shutters Control"; pixel_y = -3},/obj/structure/table/glass,/turf/simulated/floor{icon_state = "white"},/area/medical/cmo) "bXy" = (/obj/machinery/computer/med_data/laptop,/obj/structure/table/glass,/turf/simulated/floor{icon_state = "white"},/area/medical/cmo) "bXz" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/keycard_auth{pixel_x = 0; pixel_y = 0},/obj/structure/table/glass,/turf/simulated/floor{tag = "icon-whiteblue (EAST)"; icon_state = "whiteblue"; dir = 4},/area/medical/cmo) @@ -5327,7 +5327,7 @@ "bYw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/aft) "bYx" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor,/area/hallway/primary/aft) "bYy" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft) -"bYz" = (/obj/structure/table,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/machinery/requests_console{department = "Janitorial"; departmentType = 1; pixel_y = -29},/obj/item/weapon/reagent_containers/spray/cleaner,/turf/simulated/floor,/area/janitor) +"bYz" = (/obj/structure/table,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/item/weapon/grenade/chem_grenade/cleaner,/obj/machinery/requests_console{department = "Janitorial"; name = "Janitor Requests Console"; departmentType = 1; pixel_y = -29},/obj/item/weapon/reagent_containers/spray/cleaner,/turf/simulated/floor,/area/janitor) "bYA" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor,/area/janitor) "bYB" = (/obj/machinery/light,/obj/structure/janitorialcart,/turf/simulated/floor,/area/janitor) "bYC" = (/obj/item/weapon/restraints/legcuffs/beartrap,/obj/item/weapon/restraints/legcuffs/beartrap,/obj/item/weapon/storage/box/mousetraps,/obj/item/weapon/storage/box/mousetraps,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor,/area/janitor) @@ -5559,7 +5559,7 @@ "cdj" = (/obj/structure/stool/bed/chair/comfy/black{dir = 4},/turf/simulated/floor/carpet,/area/ntrep) "cdk" = (/obj/structure/table/woodentable,/obj/item/device/flashlight/lamp,/obj/machinery/camera{c_tag = "Blueshield's Office"; dir = 1; network = list("SS13")},/obj/machinery/newscaster/security_unit{pixel_x = 0; pixel_y = -32},/turf/simulated/floor/wood,/area/blueshield) "cdl" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/obj/effect/landmark/start{name = "Nanotrasen Representative"},/turf/simulated/floor/carpet,/area/ntrep) -"cdm" = (/obj/machinery/requests_console{announcementConsole = 1; department = "NT Representative"; departmentType = 5; dir = 2; name = "NT Rep Requests Console"; pixel_x = 30},/turf/simulated/floor/wood,/area/ntrep) +"cdm" = (/obj/machinery/requests_console{announcementConsole = 1; department = "NT Representative"; departmentType = 5; dir = 2; name = "NT Representative Requests Console"; pixel_x = 30},/turf/simulated/floor/wood,/area/ntrep) "cdn" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/aft) "cdo" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{level = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/hallway/primary/aft) "cdp" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1; level = 1},/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft) @@ -6101,7 +6101,7 @@ "coi" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor/plating,/area/maintenance/apmaint) "com" = (/obj/structure/table,/obj/item/stack/cable_coil{pixel_x = -3; pixel_y = 3},/obj/item/stack/cable_coil,/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor/plating,/area/storage/tech) "con" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor/plating,/area/storage/tech) -"coo" = (/obj/machinery/requests_console{department = "Tech storage"; pixel_x = 0; pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/storage/tech) +"coo" = (/obj/machinery/requests_console{department = "Tech Storage"; name = "Tech Storage Requests Console"; pixel_x = 0; pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/storage/tech) "cop" = (/obj/machinery/light/small{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/storage/tech) "coq" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/wall,/area/storage/tech) "cor" = (/obj/machinery/power/apc{name = "Aft Hall APC"; dir = 8; pixel_x = -25; pixel_y = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/aft) @@ -6442,7 +6442,7 @@ "cvv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/engine/break_room) "cvx" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor,/area/atmos/control) "cvy" = (/turf/simulated/floor,/area/atmos/control) -"cvz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/computer/security/engineering,/obj/machinery/requests_console{department = "Atmospherics"; departmentType = 4; name = "Atmospherics Requests Console"; pixel_x = 30; pixel_y = 0},/turf/simulated/floor,/area/atmos/control) +"cvz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/computer/security/engineering,/obj/machinery/requests_console{department = "Atmospherics"; departmentType = 3; name = "Atmospherics Requests Console"; pixel_x = 30; pixel_y = 0},/turf/simulated/floor,/area/atmos/control) "cvA" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/wall,/area/medical/surgery) "cvB" = (/obj/structure/closet/secure_closet/medical2,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) "cvC" = (/obj/machinery/power/apc{dir = 2; name = "Surgery APC"; pixel_y = -24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery) @@ -6925,7 +6925,7 @@ "cFK" = (/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/plating,/area/maintenance/aft) "cFL" = (/obj/structure/stool/bed/chair,/obj/item/weapon/storage/fancy/cigarettes,/turf/simulated/floor/plating,/area/maintenance/asmaint) "cFM" = (/obj/item/device/radio/intercom{broadcasting = 0; name = "Station Intercom (General)"; pixel_y = 20},/obj/structure/table,/obj/item/weapon/book/manual/engineering_hacking{pixel_x = 3; pixel_y = 3},/obj/item/weapon/book/manual/engineering_construction,/obj/item/weapon/book/manual/supermatter_engine,/turf/simulated/floor,/area/engine/engineering) -"cFN" = (/obj/machinery/requests_console{announcementConsole = 0; department = "Engineering"; departmentType = 4; name = "Engineering RC"; pixel_y = 30},/obj/structure/table,/obj/item/weapon/book/manual/engineering_guide,/obj/item/weapon/book/manual/engineering_particle_accelerator{pixel_y = 6},/obj/item/weapon/book/manual/engineering_singularity_safety,/turf/simulated/floor,/area/engine/engineering) +"cFN" = (/obj/machinery/requests_console{department = "Engineering"; departmentType = 3; name = "Engineering Requests Console"; pixel_y = 30},/obj/structure/table,/obj/item/weapon/book/manual/engineering_guide,/obj/item/weapon/book/manual/engineering_particle_accelerator{pixel_y = 6},/obj/item/weapon/book/manual/engineering_singularity_safety,/turf/simulated/floor,/area/engine/engineering) "cFO" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/machinery/light{dir = 1},/obj/item/weapon/cartridge/engineering{pixel_x = 3},/obj/item/weapon/cartridge/engineering{pixel_x = -3; pixel_y = 2},/obj/item/weapon/cartridge/engineering{pixel_x = 4; pixel_y = 5},/turf/simulated/floor,/area/engine/engineering) "cFP" = (/obj/machinery/power/apc{cell_type = 15000; dir = 1; name = "Engineering APC"; pixel_x = 0; pixel_y = 25},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor,/area/engine/engineering) "cFR" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/rig,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/power/apc{dir = 1; name = "Engineering Hardsuit Storage APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor,/area/engine/hardsuitstorage) @@ -6933,14 +6933,14 @@ "cFT" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/rig,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor,/area/engine/hardsuitstorage) "cFU" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/rig,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig,/obj/machinery/firealarm{dir = 2; pixel_y = 24},/turf/simulated/floor,/area/engine/hardsuitstorage) "cFW" = (/obj/machinery/keycard_auth{pixel_x = 0; pixel_y = 24},/obj/structure/table/reinforced,/obj/item/weapon/rcd,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/rcd_ammo,/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/stock_parts/cell/high{charge = 100; maxcharge = 15000},/obj/item/clothing/glasses/meson{pixel_y = 4},/obj/item/device/megaphone,/mob/living/simple_animal/parrot/Poly,/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) -"cFX" = (/obj/machinery/requests_console{announcementConsole = 1; department = "Chief Engineer's Desk"; departmentType = 3; name = "Chief Engineer RC"; pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/photocopier,/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) +"cFX" = (/obj/machinery/requests_console{announcementConsole = 1; department = "Chief Engineer's Desk"; departmentType = 3; name = "Chief Engineer Requests Console"; pixel_x = 0; pixel_y = 32},/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/photocopier,/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) "cFY" = (/obj/machinery/door_control{id = "atmos"; name = "Atmospherics Lockdown"; pixel_x = 10; pixel_y = 24; req_access_txt = "24"},/obj/machinery/door_control{desc = "A remote control-switch for the engineering security doors."; id = "Engineering"; name = "Engineering Lockdown"; pixel_x = -10; pixel_y = 24; req_access_txt = "10"},/obj/machinery/door_control{desc = "A remote control-switch for secure storage."; id = "Secure Storage"; name = "Engineering Secure Storage"; pixel_x = 0; pixel_y = 24; req_access_txt = "11"},/obj/machinery/light_switch{pixel_y = 38},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101; on = 1; pressure_checks = 1},/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) "cFZ" = (/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) "cGa" = (/obj/machinery/computer/atmos_alert,/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office) "cGc" = (/obj/structure/closet/secure_closet/engineering_personal,/turf/simulated/floor,/area/engine/equipmentstorage) "cGd" = (/obj/effect/landmark{name = "lightsout"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor,/area/engine/equipmentstorage) "cGe" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/engine/equipmentstorage) -"cGf" = (/obj/structure/table,/obj/machinery/requests_console{announcementConsole = 0; department = "Engineering"; departmentType = 4; name = "Engineering Requests Console"; pixel_x = 30; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/turf/simulated/floor,/area/engine/equipmentstorage) +"cGf" = (/obj/structure/table,/obj/machinery/requests_console{department = "Engineering"; departmentType = 3; name = "Engineering Requests Console"; pixel_x = 30; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply{level = 1},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/turf/simulated/floor,/area/engine/equipmentstorage) "cGg" = (/turf/simulated/floor,/turf/simulated/floor{tag = "icon-siding1 (NORTH)"; icon_state = "siding1"; dir = 1},/area/atmos) "cGh" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor,/area/atmos) "cGi" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/atmos) @@ -7819,7 +7819,7 @@ "cZd" = (/obj/structure/cable,/obj/machinery/power/port_gen/pacman,/turf/simulated/floor{dir = 6; icon_state = "yellow"},/area/aisat/maintenance) "cZh" = (/turf/space,/area/shuttle/derelict/ship/station) "cZi" = (/obj/structure/table,/obj/item/weapon/airlock_electronics,/obj/item/weapon/airlock_electronics,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil,/obj/item/stack/tape_roll,/obj/item/stack/tape_roll,/turf/simulated/floor,/area/engine/equipmentstorage) -"cZj" = (/obj/machinery/computer/secure_data,/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_y = 30},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint2) +"cZj" = (/obj/machinery/computer/secure_data,/obj/machinery/requests_console{department = "Security"; name = "Security Requests Console"; departmentType = 5; pixel_y = 30},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/security/checkpoint2) "cZk" = (/obj/machinery/biogenerator,/turf/simulated/floor,/area/hallway/secondary/construction{name = "\improper Garden"}) "cZl" = (/obj/structure/table/glass,/turf/simulated/floor,/area/hallway/secondary/construction{name = "\improper Garden"}) "cZm" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/turf/simulated/floor,/area/hallway/secondary/construction{name = "\improper Garden"}) diff --git a/code/defines/procs/announce.dm b/code/defines/procs/announce.dm index 7cb7799a372..1211f9e14f8 100644 --- a/code/defines/procs/announce.dm +++ b/code/defines/procs/announce.dm @@ -31,13 +31,14 @@ title = "Security Announcement" announcement_type = "Security Announcement" -/datum/announcement/proc/Announce(var/message as text, var/new_title = "", var/new_sound = null, var/do_newscast = newscast) +/datum/announcement/proc/Announce(var/message as text, var/new_title = "", var/new_sound = null, var/do_newscast = newscast, var/msg_sanitized = 0) if(!message) return var/tmp/message_title = new_title ? new_title : title var/tmp/message_sound = new_sound ? sound(new_sound) : sound - message = trim_strip_html_properly(message) + if(!msg_sanitized) + message = trim_strip_html_properly(message) message_title = html_encode(message_title) Message(message, message_title) diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index facd5f05b03..d6ff953e598 100644 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -1497,6 +1497,14 @@ var/list/ghostteleportlocs = list() /area/security/brig name = "\improper Brig" icon_state = "brig" + +/area/security/brig/prison_break() + for(var/obj/structure/closet/secure_closet/brig/temp_closet in src) + temp_closet.locked = 0 + temp_closet.icon_state = temp_closet.icon_closed + for(var/obj/machinery/door_timer/temp_timer in src) + temp_timer.releasetime = 1 + ..() /area/security/permabrig name = "\improper Prison Wing" @@ -1505,6 +1513,14 @@ var/list/ghostteleportlocs = list() /area/security/prison name = "\improper Prison Wing" icon_state = "sec_prison" + +/area/security/prison/prison_break() + for(var/obj/structure/closet/secure_closet/brig/temp_closet in src) + temp_closet.locked = 0 + temp_closet.icon_state = temp_closet.icon_closed + for(var/obj/machinery/door_timer/temp_timer in src) + temp_timer.releasetime = 1 + ..() /area/security/prison/cell_block name = "\improper Prison Cell Block" diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 44b562ecaed..b0914724fa6 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -432,3 +432,11 @@ if(T && gravity_generators["[T.z]"] && length(gravity_generators["[T.z]"])) return 1 return 0 + +/area/proc/prison_break() + for(var/obj/machinery/power/apc/temp_apc in src) + temp_apc.overload_lighting(70) + for(var/obj/machinery/door/airlock/temp_airlock in src) + temp_airlock.prison_open() + for(var/obj/machinery/door/window/temp_windoor in src) + temp_windoor.open() \ No newline at end of file diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index abb034886ed..48d4050ff51 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -972,14 +972,6 @@ About the new airlock wires panel: welded = 1 update_icon() - -/obj/machinery/door/airlock/proc/prison_open() - src.unlock() - src.open() - src.locked = 1 - return - - /obj/machinery/door/airlock/hatch/gamma/attackby(C as obj, mob/user as mob, params) //world << text("airlock attackby src [] obj [] mob []", src, C, user) if(!istype(usr, /mob/living/silicon)) @@ -1055,3 +1047,10 @@ About the new airlock wires panel: // Keeping door lights on, runs on internal battery or something. electrified_until = 0 update_icon() + +/obj/machinery/door/airlock/proc/prison_open() + if(arePowerSystemsOn()) + src.unlock() + src.open() + src.lock() + return \ No newline at end of file diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 34a67e0607a..4b054a58f42 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -298,7 +298,12 @@ Class Procs: add_fingerprint(usr) return 0 +/obj/machinery/proc/operable(var/additional_flags = 0) + return !inoperable(additional_flags) +/obj/machinery/proc/inoperable(var/additional_flags = 0) + return (stat & (NOPOWER|BROKEN|additional_flags)) + /obj/machinery/CanUseTopic(var/mob/user) if(!interact_offline && (stat & (NOPOWER|BROKEN))) return STATUS_CLOSE diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index ed6e201a3ff..bc1b8872ae7 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -1,6 +1,22 @@ /******************** Requests Console ********************/ /** Originally written by errorage, updated by: Carn, needs more work though. I just added some security fixes */ +//Request Console Department Types +#define RC_ASSIST 1 //Request Assistance +#define RC_SUPPLY 2 //Request Supplies +#define RC_INFO 4 //Relay Info + +//Request Console Screens +#define RCS_MAINMENU 0 // Main menu +#define RCS_RQASSIST 1 // Request supplies +#define RCS_RQSUPPLY 2 // Request assistance +#define RCS_SENDINFO 3 // Relay information +#define RCS_SENTPASS 4 // Message sent successfully +#define RCS_SENTFAIL 5 // Message sent unsuccessfully +#define RCS_VIEWMSGS 6 // View messages +#define RCS_MESSAUTH 7 // Authentication before sending +#define RCS_ANNOUNCE 8 // Send announcement + var/req_console_assistance = list() var/req_console_supplies = list() var/req_console_information = list() @@ -8,38 +24,18 @@ var/list/obj/machinery/requests_console/allConsoles = list() /obj/machinery/requests_console name = "Requests Console" - desc = "A console intended to send requests to diferent departments on the station." + desc = "A console intended to send requests to different departments on the station." anchored = 1 icon = 'icons/obj/terminals.dmi' icon_state = "req_comp0" var/department = "Unknown" //The list of all departments on the station (Determined from this variable on each unit) Set this to the same thing if you want several consoles in one department - var/list/messages = list() //List of all messages - var/departmentType = 0 - // 0 = none (not listed, can only repeplied to) - // 1 = assistance - // 2 = supplies - // 3 = info - // 4 = ass + sup //Erro goddamn you just HAD to shorten "assistance" down to "ass" - // 5 = ass + info - // 6 = sup + info - // 7 = ass + sup + info + var/list/message_log = list() //List of all messages + var/departmentType = 0 //Bitflag. Zero is reply-only. Map currently uses raw numbers instead of defines. var/newmessagepriority = 0 // 0 = no new message // 1 = normal priority // 2 = high priority - // 3 = extreme priority - not implemented, will probably require some hacking... everything needs to have a hidden feature in this game. - var/screen = 0 - // 0 = main menu, - // 1 = req. assistance, - // 2 = req. supplies - // 3 = relay information - // 4 = write msg - not used - // 5 = choose priority - not used - // 6 = sent successfully - // 7 = sent unsuccessfully - // 8 = view messages - // 9 = authentication before sending - // 10 = send announcement + var/screen = RCS_MAINMENU var/silent = 0 // set to 1 for it not to beep all the time // var/hackState = 0 // 0 = not hacked @@ -52,9 +48,9 @@ var/list/obj/machinery/requests_console/allConsoles = list() var/msgVerified = "" //Will contain the name of the person who varified it var/msgStamped = "" //If a message is stamped, this will contain the stamp name var/message = ""; - var/dpt = ""; //the department which will be receiving the message + var/recipient = ""; //the department which will be receiving the message var/priority = -1 ; //Priority of the message being sent - luminosity = 0 + light_range = 0 var/datum/announcement/announcement = new /obj/machinery/requests_console/power_change() @@ -67,153 +63,73 @@ var/list/obj/machinery/requests_console/allConsoles = list() icon_state = "req_comp_off" else if(icon_state == "req_comp_off") - icon_state = "req_comp0" + icon_state = "req_comp[newmessagepriority]" /obj/machinery/requests_console/New() ..() - + announcement.title = "[department] announcement" announcement.newscast = 1 - + name = "[department] Requests Console" allConsoles += src - //req_console_departments += department - switch(departmentType) - if(1) - if(!("[department]" in req_console_assistance)) - req_console_assistance += department - if(2) - if(!("[department]" in req_console_supplies)) - req_console_supplies += department - if(3) - if(!("[department]" in req_console_information)) - req_console_information += department - if(4) - if(!("[department]" in req_console_assistance)) - req_console_assistance += department - if(!("[department]" in req_console_supplies)) - req_console_supplies += department - if(5) - if(!("[department]" in req_console_assistance)) - req_console_assistance += department - if(!("[department]" in req_console_information)) - req_console_information += department - if(6) - if(!("[department]" in req_console_supplies)) - req_console_supplies += department - if(!("[department]" in req_console_information)) - req_console_information += department - if(7) - if(!("[department]" in req_console_assistance)) - req_console_assistance += department - if(!("[department]" in req_console_supplies)) - req_console_supplies += department - if(!("[department]" in req_console_information)) - req_console_information += department + if (departmentType & RC_ASSIST) + req_console_assistance |= department + if (departmentType & RC_SUPPLY) + req_console_supplies |= department + if (departmentType & RC_INFO) + req_console_information |= department + + set_light(1) +/obj/machinery/requests_console/Destroy() + allConsoles -= src + var/lastDeptRC = 1 + for (var/obj/machinery/requests_console/Console in allConsoles) + if (Console.department == department) + lastDeptRC = 0 + break + if(lastDeptRC) + if (departmentType & RC_ASSIST) + req_console_assistance -= department + if (departmentType & RC_SUPPLY) + req_console_supplies -= department + if (departmentType & RC_INFO) + req_console_information -= department + ..() /obj/machinery/requests_console/attack_hand(user as mob) if(..(user)) return - var/dat - dat = text("Requests Console

[department] Requests Console

") - if(!open) - switch(screen) - if(1) //req. assistance - dat += text("Which department do you need assistance from?

") - for(var/dpt in req_console_assistance) - if (dpt != department) - dat += text("[dpt] (Message or ") - dat += text("High Priority") -// if (hackState == 1) -// dat += text(" or EXTREME)") - dat += text(")
") - dat += text("
Back
") + ui_interact(user) - if(2) //req. supplies - dat += text("Which department do you need supplies from?

") - for(var/dpt in req_console_supplies) - if (dpt != department) - dat += text("[dpt] (Message or ") - dat += text("High Priority") -// if (hackState == 1) -// dat += text(" or EXTREME)") - dat += text(")
") - dat += text("
Back
") +/obj/machinery/requests_console/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) + var/data[0] - if(3) //relay information - dat += text("Which department would you like to send information to?

") - for(var/dpt in req_console_information) - if (dpt != department) - dat += text("[dpt] (Message or ") - dat += text("High Priority") -// if (hackState == 1) -// dat += text(" or EXTREME)") - dat += text(")
") - dat += text("
Back
") + data["department"] = department + data["screen"] = screen + data["message_log"] = message_log + data["newmessagepriority"] = newmessagepriority + data["silent"] = silent + data["announcementConsole"] = announcementConsole - if(6) //sent successfully - dat += text("Message sent

") - dat += text("Continue
") + data["assist_dept"] = req_console_assistance + data["supply_dept"] = req_console_supplies + data["info_dept"] = req_console_information - if(7) //unsuccessful; not sent - dat += text("An error occurred.

") - dat += text("Continue
") + data["message"] = message + data["recipient"] = recipient + data["priortiy"] = priority + data["msgStamped"] = msgStamped + data["msgVerified"] = msgVerified + data["announceAuth"] = announceAuth - if(8) //view messages - for (var/obj/machinery/requests_console/Console in allConsoles) - if (Console.department == department) - Console.newmessagepriority = 0 - Console.icon_state = "req_comp0" - Console.luminosity = 1 - newmessagepriority = 0 - icon_state = "req_comp0" - for(var/msg in messages) - dat += text("[msg]
") - dat += text("Back to main menu
") - - if(9) //authentication before sending - dat += text("Message Authentication

") - dat += text("Message for [dpt]: [message]

") - dat += text("You may authenticate your message now by scanning your ID or your stamp

") - dat += text("Validated by: [msgVerified]
"); - dat += text("Stamped by: [msgStamped]
"); - dat += text("Send
"); - dat += text("
Back
") - - if(10) //send announcement - dat += text("Station wide announcement

") - if(announceAuth) - dat += text("Authentication accepted

") - else - dat += text("Swipe your card to authenticate yourself.

") - dat += text("Message: [message] Write

") - if (announceAuth && message) - dat += text("Announce
"); - dat += text("
Back
") - - else //main menu - screen = 0 - reset_announce() - if (newmessagepriority == 1) - dat += text("There are new messages
") - if (newmessagepriority == 2) - dat += text("NEW PRIORITY MESSAGES
") - dat += text("View Messages

") - - dat += text("Request Assistance
") - dat += text("Request Supplies
") - dat += text("Relay Anonymous Information

") - if(announcementConsole) - dat += text("Send station-wide announcement

") - if (silent) - dat += text("Speaker OFF") - else - dat += text("Speaker ON") - - user << browse("[dat]", "window=request_console") - onclose(user, "req_console") - return + ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) + if (!ui) + ui = new(user, src, ui_key, "request_console.tmpl", "[department] Request Console", 520, 410) + ui.set_initial_data(data) + ui.open() + ui.set_auto_update(1) /obj/machinery/requests_console/Topic(href, href_list) if(..()) return @@ -221,144 +137,68 @@ var/list/obj/machinery/requests_console/allConsoles = list() add_fingerprint(usr) if(reject_bad_text(href_list["write"])) - dpt = ckey(href_list["write"]) //write contains the string of the receiving department's name + recipient = href_list["write"] //write contains the string of the receiving department's name - var/new_message = copytext(reject_bad_text(input(usr, "Write your message:", "Awaiting Input", "")),1,MAX_MESSAGE_LEN) + var/new_message = sanitize(input("Write your message:", "Awaiting Input", "")) if(new_message) message = new_message - screen = 9 + screen = RCS_MESSAUTH switch(href_list["priority"]) + if("1") priority = 1 if("2") priority = 2 - else priority = -1 + else priority = 0 else - dpt = ""; - msgVerified = "" - msgStamped = "" - screen = 0 - priority = -1 + reset_message(1) if(href_list["writeAnnouncement"]) - var/new_message = copytext(reject_bad_text(input(usr, "Write your message:", "Awaiting Input", "")),1,MAX_MESSAGE_LEN) + var/new_message = sanitize(input("Write your message:", "Awaiting Input", "")) if(new_message) message = new_message - switch(href_list["priority"]) - if("2") priority = 2 - else priority = -1 else - reset_announce() - screen = 0 + reset_message(1) if(href_list["sendAnnouncement"]) if(!announcementConsole) return - announcement.Announce(message) - reset_announce() - screen = 0 + announcement.Announce(message, msg_sanitized = 1) + reset_message(1) if( href_list["department"] && message ) var/log_msg = message - var/sending = message - sending += "
" - if (msgVerified) - sending += msgVerified - sending += "
" - if (msgStamped) - sending += msgStamped - sending += "
" - screen = 7 //if it's successful, this will get overrwritten (7 = unsufccessfull, 6 = successfull) - if (sending) - var/pass = 0 - for (var/obj/machinery/message_server/MS in world) - if(!MS.active) continue - MS.send_rc_message(href_list["department"],department,log_msg,msgStamped,msgVerified,priority) - pass = 1 - - if(pass) - - for (var/obj/machinery/requests_console/Console in allConsoles) - if (ckey(Console.department) == ckey(href_list["department"])) - - switch(priority) - if("2") //High priority - if(Console.newmessagepriority < 2) - Console.newmessagepriority = 2 - Console.icon_state = "req_comp2" - if(!Console.silent) - playsound(Console.loc, 'sound/machines/twobeep.ogg', 50, 1) - for (var/mob/O in hearers(5, Console.loc)) - O.show_message(text("\icon[Console] *The Requests Console beeps: 'PRIORITY Alert in [department]'")) - Console.messages += "High Priority message from [department]
[sending]" - - // if("3") //Not implemanted, but will be //Removed as it doesn't look like anybody intends on implimenting it ~Carn - // if(Console.newmessagepriority < 3) - // Console.newmessagepriority = 3 - // Console.icon_state = "req_comp3" - // if(!Console.silent) - // playsound(Console.loc, 'sound/machines/twobeep.ogg', 50, 1) - // for (var/mob/O in hearers(7, Console.loc)) - // O.show_message(text("\icon[Console] *The Requests Console yells: 'EXTREME PRIORITY alert in [department]'")) - // Console.messages += "Extreme Priority message from [ckey(department)]
[message]" - - else // Normal priority - if(Console.newmessagepriority < 1) - Console.newmessagepriority = 1 - Console.icon_state = "req_comp1" - if(!Console.silent) - playsound(Console.loc, 'sound/machines/twobeep.ogg', 50, 1) - for (var/mob/O in hearers(4, Console.loc)) - O.show_message(text("\icon[Console] *The Requests Console beeps: 'Message from [department]'")) - Console.messages += "Message from [department]
[message]" - - screen = 6 - Console.luminosity = 2 - messages += "Message sent to [dpt]
[message]" - else - for (var/mob/O in hearers(4, src.loc)) - O.show_message(text("\icon[src] *The Requests Console beeps: 'NOTICE: No server detected!'")) - + var/pass = 0 + screen = RCS_SENTFAIL + for (var/obj/machinery/message_server/MS in world) + if(!MS.active) continue + MS.send_rc_message(ckey(href_list["department"]),department,log_msg,msgStamped,msgVerified,priority) + pass = 1 + if(pass) + screen = RCS_SENTPASS + message_log += "Message sent to [recipient]
[message]" + else + audible_message(text("\icon[src] *The Requests Console beeps: 'NOTICE: No server detected!'"),,4) //Handle screen switching - switch(text2num(href_list["setScreen"])) - if(null) //skip - if(1) //req. assistance - screen = 1 - if(2) //req. supplies - screen = 2 - if(3) //relay information - screen = 3 -// if(4) //write message -// screen = 4 - if(5) //choose priority - screen = 5 - if(6) //sent successfully - screen = 6 - if(7) //unsuccessfull; not sent - screen = 7 - if(8) //view messages - screen = 8 - if(9) //authentication - screen = 9 - if(10) //send announcement - if(!announcementConsole) return - screen = 10 - else //main menu - dpt = "" - msgVerified = "" - msgStamped = "" - message = "" - priority = -1 - screen = 0 + if(href_list["setScreen"]) + var/tempScreen = text2num(href_list["setScreen"]) + if(tempScreen == RCS_ANNOUNCE && !announcementConsole) + return + if(tempScreen == RCS_VIEWMSGS) + for (var/obj/machinery/requests_console/Console in allConsoles) + if (Console.department == department) + Console.newmessagepriority = 0 + Console.icon_state = "req_comp0" + Console.set_light(1) + if(tempScreen == RCS_MAINMENU) + reset_message() + screen = tempScreen //Handle silencing the console - switch( href_list["setSilent"] ) - if(null) //skip - if("1") silent = 1 - else silent = 0 + if(href_list["toggleSilent"]) + silent = !silent - updateUsrDialog() return - //err... hacking code, which has no reason for existing... but anyway... it's supposed to unlock priority 3 messanging on that console (EXTREME priority...) the code for that actually exists. -/obj/machinery/requests_console/attackby(var/obj/item/weapon/O as obj, var/mob/user as mob, params) + //err... hacking code, which has no reason for existing... but anyway... it was once supposed to unlock priority 3 messanging on that console (EXTREME priority...), but the code for that was removed. +/obj/machinery/requests_console/attackby(var/obj/item/weapon/O as obj, var/mob/user as mob) /* if (istype(O, /obj/item/weapon/crowbar)) if(open) @@ -382,27 +222,35 @@ var/list/obj/machinery/requests_console/allConsoles = list() user << "You can't do much with that."*/ if (istype(O, /obj/item/weapon/card/id)) - if(screen == 9) + if(inoperable(MAINT)) return + if(screen == RCS_MESSAUTH) var/obj/item/weapon/card/id/T = O msgVerified = text("Verified by [T.registered_name] ([T.assignment])") updateUsrDialog() - if(screen == 10) + if(screen == RCS_ANNOUNCE) var/obj/item/weapon/card/id/ID = O if (access_RC_announce in ID.GetAccess()) announceAuth = 1 announcement.announcer = ID.assignment ? "[ID.assignment] [ID.registered_name]" : ID.registered_name else - reset_announce() - user << "\red You are not authorized to send announcements." + reset_message() + user << "You are not authorized to send announcements." updateUsrDialog() if (istype(O, /obj/item/weapon/stamp)) - if(screen == 9) + if(inoperable(MAINT)) return + if(screen == RCS_MESSAUTH) var/obj/item/weapon/stamp/T = O msgStamped = text("Stamped with the [T.name]") updateUsrDialog() return - -/obj/machinery/requests_console/proc/reset_announce() - announceAuth = 0 + +/obj/machinery/requests_console/proc/reset_message(var/mainmenu = 0) message = "" + recipient = "" + priority = 0 + msgVerified = "" + msgStamped = "" + announceAuth = 0 announcement.announcer = "" + if(mainmenu) + screen = RCS_MAINMENU diff --git a/code/modules/events/event_container.dm b/code/modules/events/event_container.dm index 56797ed8785..f7924a83ed7 100644 --- a/code/modules/events/event_container.dm +++ b/code/modules/events/event_container.dm @@ -149,7 +149,9 @@ var/global/list/severity_to_string = list(EVENT_LEVEL_MUNDANE = "Mundane", EVENT new /datum/event_meta(EVENT_LEVEL_MODERATE, "Meaty Ores", /datum/event/dust/meaty, 0, list(ASSIGNMENT_ENGINEER = 30)), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Communication Blackout", /datum/event/communications_blackout, 500, list(ASSIGNMENT_AI = 150, ASSIGNMENT_SECURITY = 120)), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Prison Break", /datum/event/prison_break, 0, list(ASSIGNMENT_SECURITY = 100)), -// new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grid Check", /datum/event/grid_check, 200, list(ASSIGNMENT_ENGINEER = 60)), + //new /datum/event_meta(EVENT_LEVEL_MODERATE, "Virology Breach", /datum/event/prison_break/virology, 0, list(ASSIGNMENT_MEDICAL = 100)), + //new /datum/event_meta(EVENT_LEVEL_MODERATE, "Xenobiology Breach", /datum/event/prison_break/xenobiology, 0, list(ASSIGNMENT_SCIENCE = 100)), + //new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grid Check", /datum/event/grid_check, 200, list(ASSIGNMENT_ENGINEER = 60)), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Electrical Storm", /datum/event/electrical_storm, 250, list(ASSIGNMENT_ENGINEER = 20, ASSIGNMENT_JANITOR = 150)), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Radiation Storm", /datum/event/radiation_storm, 0, list(ASSIGNMENT_MEDICAL = 50), 1), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Viral Infection", /datum/event/viral_infection, 0, list(ASSIGNMENT_MEDICAL = 150)), @@ -177,6 +179,7 @@ var/global/list/severity_to_string = list(EVENT_LEVEL_MUNDANE = "Mundane", EVENT available_events = list( new /datum/event_meta(EVENT_LEVEL_MAJOR, "Nothing", /datum/event/nothing, 1320), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Carp Migration", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 3), 1), + //new /datum/event_meta(EVENT_LEVEL_MAJOR, "Containment Breach", /datum/event/prison_break/station, 0, list(ASSIGNMENT_ANY = 5)), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Viral Infection", /datum/event/viral_infection, 0, list(ASSIGNMENT_MEDICAL = 30), 1), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Blob", /datum/event/blob, 0, list(ASSIGNMENT_ENGINEER = 30), 1), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Wave", /datum/event/meteor_wave, 0, list(ASSIGNMENT_ENGINEER = 3), 1), diff --git a/code/modules/events/money_hacker.dm b/code/modules/events/money_hacker.dm index 5fbc323a292..e3665815515 100644 --- a/code/modules/events/money_hacker.dm +++ b/code/modules/events/money_hacker.dm @@ -19,30 +19,10 @@ without intervention this attack will succeed in approximately 10 minutes. Required intervention: temporary suspension of affected accounts until the attack has ceased. \ Notifications will be sent as updates occur.
" var/my_department = "[station_name()] firewall subroutines" - var/sending = message + "Message dispatched by [my_department]." - var/pass = 0 for(var/obj/machinery/message_server/MS in world) if(!MS.active) continue - // /obj/machinery/message_server/proc/send_rc_message(var/recipient = "",var/sender = "",var/message = "",var/stamp = "", var/id_auth = "", var/priority = 1) - MS.send_rc_message("Engineering/Security/Bridge", my_department, message, "", "", 2) - pass = 1 - - if(pass) - var/keyed_dpt1 = ckey("Engineering") - var/keyed_dpt2 = ckey("Security") - var/keyed_dpt3 = ckey("Bridge") - for (var/obj/machinery/requests_console/Console in allConsoles) - var/keyed_department = ckey(Console.department) - if(keyed_department == keyed_dpt1 || keyed_department == keyed_dpt2 || keyed_department == keyed_dpt3) - if(Console.newmessagepriority < 2) - Console.newmessagepriority = 2 - Console.icon_state = "req_comp2" - if(!Console.silent) - playsound(Console.loc, 'sound/machines/twobeep.ogg', 50, 1) - for (var/mob/O in hearers(5, Console.loc)) - O.show_message(text("\icon[Console] *The Requests Console beeps: 'PRIORITY Alert in [my_department]'")) - Console.messages += "High Priority message from [my_department]
[sending]" + MS.send_rc_message("Head of Personnel's Desk", my_department, message, "", "", 2) /datum/event/money_hacker/tick() if(world.time >= end_time) @@ -80,27 +60,7 @@ message = "The attack has ceased, the affected accounts can now be brought online." var/my_department = "[station_name()] firewall subroutines" - var/sending = message + "Message dispatched by [my_department]." - var/pass = 0 for(var/obj/machinery/message_server/MS in world) if(!MS.active) continue - // /obj/machinery/message_server/proc/send_rc_message(var/recipient = "",var/sender = "",var/message = "",var/stamp = "", var/id_auth = "", var/priority = 1) - MS.send_rc_message("Engineering/Security/Bridge", my_department, message, "", "", 2) - pass = 1 - - if(pass) - var/keyed_dpt1 = ckey("Engineering") - var/keyed_dpt2 = ckey("Security") - var/keyed_dpt3 = ckey("Bridge") - for (var/obj/machinery/requests_console/Console in allConsoles) - var/keyed_department = ckey(Console.department) - if(keyed_department == keyed_dpt1 || keyed_department == keyed_dpt2 || keyed_department == keyed_dpt3) - if(Console.newmessagepriority < 2) - Console.newmessagepriority = 2 - Console.icon_state = "req_comp2" - if(!Console.silent) - playsound(Console.loc, 'sound/machines/twobeep.ogg', 50, 1) - for (var/mob/O in hearers(5, Console.loc)) - O.show_message(text("\icon[Console] *The Requests Console beeps: 'PRIORITY Alert in [my_department]'")) - Console.messages += "High Priority message from [my_department]
[sending]" + MS.send_rc_message("Head of Personnel's Desk", my_department, message, "", "", 2) diff --git a/code/modules/events/prison_break.dm b/code/modules/events/prison_break.dm index 5e033a4e9f1..1b8d7b8bbe1 100644 --- a/code/modules/events/prison_break.dm +++ b/code/modules/events/prison_break.dm @@ -1,56 +1,71 @@ /datum/event/prison_break - announceWhen = 50 + startWhen = 5 + announceWhen = 75 + + var/releaseWhen = 60 + var/list/area/areas = list() //List of areas to affect. Filled by start() + + var/eventDept = "Security" //Department name in announcement + var/list/areaName = list("Brig") //Names of areas mentioned in AI and Engineering announcements + var/list/areaType = list(/area/security/prison, /area/security/brig) //Area types to include. + var/list/areaNotType = list() //Area types to specifically exclude. + +/datum/event/prison_break/virology + eventDept = "Medical" + areaName = list("Virology") + areaType = list(/area/medical/virology, /area/medical/virology/lab) + +/datum/event/prison_break/xenobiology + eventDept = "Science" + areaName = list("Xenobiology") + areaType = list(/area/toxins/xenobiology) + areaNotType = list(/area/toxins/xenobiology/xenoflora, /area/toxins/xenobiology/xenoflora_storage) + +/datum/event/prison_break/station + eventDept = "Station" + areaName = list("Brig","Virology","Xenobiology") + areaType = list(/area/security/prison, /area/security/brig, /area/medical/virology, /area/medical/virology/lab, /area/toxins/xenobiology) + areaNotType = list(/area/toxins/xenobiology/xenoflora, /area/toxins/xenobiology/xenoflora_storage) - var/releaseWhen = 25 - var/list/area/prisonAreas = list() - var/list/potentialAreas = list("/area/security/prison","/area/security/brig","/area/security/processing","/area/security/permabrig","/area/security/lobby","/area/security/lobby") - var/list/candidateAreas = list() /datum/event/prison_break/setup() - announceWhen = rand(50, 60) - releaseWhen = rand(20, 30) + announceWhen = rand(75, 105) + releaseWhen = rand(60, 90) - src.startWhen = src.releaseWhen-1 - src.endWhen = src.releaseWhen+1 - - for(var/areaa in potentialAreas) - var/path = text2path(areaa) - candidateAreas += typesof(path) - - for(var/area/A in world) - if(is_type_in_list(A, candidateAreas)) - prisonAreas += A + src.endWhen = src.releaseWhen+2 /datum/event/prison_break/announce() - if(prisonAreas && prisonAreas.len > 0) - command_announcement.Announce("[pick("Gr3y.T1d3 virus","Malignant trojan")] detected in [station_name()] imprisonment subroutines. Recommend station AI involvement.", "Security Alert") - else - world.log << "ERROR: Could not initate grey-tide. Unable find prison or brig area." - kill() + if(areas && areas.len > 0) + command_announcement.Announce("[pick("Gr3y.T1d3 virus","Malignant trojan")] detected in [station_name()] [(eventDept == "Security")? "imprisonment":"containment"] subroutines. Secure any compromised areas immediately. Station AI involvement is recommended.", "[eventDept] Alert") + /datum/event/prison_break/start() - if(prisonAreas && prisonAreas.len > 0) - for(var/area/A in prisonAreas) - for(var/obj/machinery/light/L in A) - L.flicker(10) + for(var/area/A in world) + if(is_type_in_list(A,areaType) && !is_type_in_list(A,areaNotType)) + areas += A + + if(areas && areas.len > 0) + var/my_department = "[station_name()] firewall subroutines" + var/rc_message = "An unknown malicious program has been detected in the [english_list(areaName)] lighting and airlock control systems at [worldtime2text()]. Systems will be fully compromised within approximately three minutes. Direct intervention is required immediately.
" + for(var/obj/machinery/message_server/MS in world) + MS.send_rc_message("Engineering", my_department, rc_message, "", "", 2) + for(var/mob/living/silicon/ai/A in player_list) + A << "Malicious program detected in the [english_list(areaName)] lighting and airlock control systems by [my_department]." + + else + world.log << "ERROR: Could not initate grey-tide. Unable to find suitable containment area." + kill() + /datum/event/prison_break/tick() if(activeFor == releaseWhen) - if(prisonAreas && prisonAreas.len > 0) - for(var/area/A in prisonAreas) - for(var/obj/machinery/power/apc/temp_apc in A) - temp_apc.overload_lighting() + if(areas && areas.len > 0) + for(var/area/A in areas) + for(var/obj/machinery/light/L in A) + L.flicker(10) - for(var/obj/structure/closet/secure_closet/brig/temp_closet in A) - temp_closet.locked = 0 - temp_closet.icon_state = temp_closet.icon_closed - for(var/obj/machinery/door/airlock/security/temp_airlock in A) - temp_airlock.prison_open() - - for(var/obj/machinery/door/airlock/glass_security/temp_glassairlock in A) - temp_glassairlock.prison_open() - - for(var/obj/machinery/door_timer/temp_timer in A) - temp_timer.releasetime = 1 \ No newline at end of file +/datum/event/prison_break/end() + for(var/area/A in shuffle(areas)) + A.prison_break() diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 2f875d6a1ee..d0bbbadb3fc 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -1308,15 +1308,16 @@ obj/machinery/power/apc/proc/autoset(var/val, var/on) // overload all the lights in this APC area -/obj/machinery/power/apc/proc/overload_lighting() +/obj/machinery/power/apc/proc/overload_lighting(var/chance = 100) if(/* !get_connection() || */ !operating || shorted) return if( cell && cell.charge>=20) cell.use(20); spawn(0) for(var/obj/machinery/light/L in area) - L.on = 1 - L.broken() + if(prob(chance)) + L.on = 1 + L.broken() sleep(1) /obj/machinery/power/apc/Destroy() diff --git a/code/modules/research/message_server.dm b/code/modules/research/message_server.dm index f73061bcbbc..da6bf1244bf 100644 --- a/code/modules/research/message_server.dm +++ b/code/modules/research/message_server.dm @@ -84,6 +84,31 @@ var/global/list/obj/machinery/message_server/message_servers = list() /obj/machinery/message_server/proc/send_rc_message(var/recipient = "",var/sender = "",var/message = "",var/stamp = "", var/id_auth = "", var/priority = 1) rc_msgs += new/datum/data_rc_msg(recipient,sender,message,stamp,id_auth) + var/authmsg = "[message]
" + if (id_auth) + authmsg += "[id_auth]
" + if (stamp) + authmsg += "[stamp]
" + for (var/obj/machinery/requests_console/Console in allConsoles) + if (ckey(Console.department) == ckey(recipient)) + if(Console.inoperable()) + Console.message_log += "Message lost due to console failure.
Please contact [station_name()] system adminsitrator or AI for technical assistance.
" + continue + if(Console.newmessagepriority < priority) + Console.newmessagepriority = priority + Console.icon_state = "req_comp[priority]" + switch(priority) + if(2) + if(!Console.silent) + playsound(Console.loc, 'sound/machines/twobeep.ogg', 50, 1) + Console.audible_message(text("\icon[Console] *The Requests Console beeps: 'PRIORITY Alert in [sender]'"),,5) + Console.message_log += "High Priority message from [sender]
[authmsg]" + else + if(!Console.silent) + playsound(Console.loc, 'sound/machines/twobeep.ogg', 50, 1) + Console.audible_message(text("\icon[Console] *The Requests Console beeps: 'Message from [sender]'"),,4) + Console.message_log += "Message from [sender]
[authmsg]" + Console.set_light(2) /obj/machinery/message_server/attack_hand(user as mob) // user << "\blue There seem to be some parts missing from this server. They should arrive on the station in a few days, give or take a few CentCom delays." diff --git a/nano/templates/request_console.tmpl b/nano/templates/request_console.tmpl new file mode 100644 index 00000000000..f14e27190fa --- /dev/null +++ b/nano/templates/request_console.tmpl @@ -0,0 +1,122 @@ + + +{{if data.screen == 1}} +

Request assistance from another department.

+ + {{for data.assist_dept}} + {{if value != data.department}} + + + + + + {{/if}} + {{empty}} + + {{/for}} +
{{:value}} -
{{:helper.link('Message', null, { 'write' : value , 'priority' : 1 })}}
{{:helper.link('High Priority', null, { 'write' : value , 'priority' : 2 })}}
There are no available departments to request assistance from.

+
{{:helper.link('Back', 'arrowreturnthick-1-w', { 'setScreen' : 0 })}}
+{{else data.screen == 2}} +

Request supplies from another department.

+ + {{for data.supply_dept}} + {{if value != data.department}} + + + + + + {{/if}} + {{empty}} + + {{/for}} +
{{:value}} -
{{:helper.link('Message', null, { 'write' : value , 'priority' : 1 })}}
{{:helper.link('High Priority', null, { 'write' : value , 'priority' : 2 })}}
There are no available departments to request supplies from.

+
{{:helper.link('Back', 'arrowreturnthick-1-w', { 'setScreen' : 0 })}}
+{{else data.screen == 3}} +

Relay info to another department.

+ + {{for data.info_dept}} + {{if value != data.department}} + + + + + + {{/if}} + {{empty}} + + {{/for}} +
{{:value}} -
{{:helper.link('Message', null, { 'write' : value , 'priority' : 1 })}}
{{:helper.link('High Priority', null, { 'write' : value , 'priority' : 2 })}}
There are no available departments to relay information to.

+
{{:helper.link('Back', 'arrowreturnthick-1-w', { 'setScreen' : 0 })}}
+{{else data.screen == 4}} +
Message sent successfully.
+
{{:helper.link('Continue', 'arrowthick-1-e', { 'setScreen' : 0 })}}
+{{else data.screen == 5}} +
An Error occured. Message not sent.
+
{{:helper.link('Continue', 'arrowthick-1-e', { 'setScreen' : 0 })}}
+{{else data.screen == 6}} +
+ {{for data.message_log}} +
{{:value}}
+ {{empty}} +
No messages have been recieved.
+ {{/for}} +
+
{{:helper.link('Back', 'arrowreturnthick-1-w', { 'setScreen' : 0 })}}
+{{else data.screen == 7}} +

Message Authentication


+
+
Message for {{:data.recipient}}: {{:data.message}}
+
Validated by: {{:data.msgVerified}}
+
Stamped by: {{:data.msgStamped}}
+
+
+ {{:helper.link('Send Message', 'arrowthick-1-e', { 'department' : data.recipient })}} + {{:helper.link('Back', 'arrowreturnthick-1-w', { 'setScreen' : 0 })}} +
+{{else data.screen == 8}} +

Station wide announcement

+
Message: {{:data.message}} {{:helper.link('Write Message', 'pencil', { 'writeAnnouncement' : 1 })}}
+
+ {{if data.announceAuth}} +
ID verified. Authentication accepted.
+ {{else}} +
Swipe your ID card to authenticate yourself.
+ {{/if}} +
+
+ {{:helper.link('Announce', 'signal-diag', { 'sendAnnouncement' : 1 }, (data.announceAuth && data.message) ? null : 'disabled' )}} + {{:helper.link('Back', 'arrowreturnthick-1-w', { 'setScreen' : 0 })}} +
+{{else}} + {{if data.newmessagepriority == 1}} +
There are new messages
+ {{else data.newmessagepriority == 2}} +
NEW PRIORITY MESSAGES
+ {{/if}} +
{{:helper.link('View Messages', data.newmessagepriority ? 'mail-closed' : 'mail-open', { 'setScreen' : 6 })}}
+
+
{{:helper.link('Request Assistance', 'gear', { 'setScreen' : 1 })}}
+
{{:helper.link('Request Supplies', 'gear', { 'setScreen' : 2 })}}
+
{{:helper.link('Relay Anonymous Information', 'gear', { 'setScreen' : 3})}}
+
+ {{if data.announcementConsole}} +
{{:helper.link('Send Station-wide Announcement', 'signal-diag', { 'setScreen' : 8})}}
+
+ {{/if}} +
{{:helper.link(data.silent ? 'Speaker OFF' : 'Speaker ON', data.silent ? 'volume-off' : 'volume-on', { 'toggleSilent' : 1})}}
+{{/if}} \ No newline at end of file