diff --git a/DLLSocket/DLLSocket.cbp b/DLLSocket/DLLSocket.cbp deleted file mode 100644 index 6415a5ebd67..00000000000 --- a/DLLSocket/DLLSocket.cbp +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - diff --git a/DLLSocket/compile.sh b/DLLSocket/compile.sh deleted file mode 100755 index 0ff309bdb9f..00000000000 --- a/DLLSocket/compile.sh +++ /dev/null @@ -1 +0,0 @@ -g++ -static -shared -O3 -fPIC main.cpp -o DLLSocket.so diff --git a/DLLSocket/main.cpp b/DLLSocket/main.cpp deleted file mode 100644 index e3aafb8791a..00000000000 --- a/DLLSocket/main.cpp +++ /dev/null @@ -1,133 +0,0 @@ -// OS-specific networking includes -// ------------------------------- -#ifdef __WIN32 - #include - typedef int socklen_t; -#else - extern "C" { - #include - #include - #include - #include - #include - #include - #include - #include - } - - typedef int SOCKET; - typedef sockaddr_in SOCKADDR_IN; - typedef sockaddr SOCKADDR; - #define SOCKET_ERROR -1 -#endif - -// Socket used for all communications -SOCKET sock; - -// Address of the remote server -SOCKADDR_IN addr; - -// Buffer used to return dynamic strings to the caller -#define BUFFER_SIZE 1024 -char return_buffer[BUFFER_SIZE]; - -// exposed functions -// ------------------------------ - -const char* SUCCESS = "1\0"; // string representing success - -#ifdef __WIN32 - #define DLL_EXPORT __declspec(dllexport) -#else - #define DLL_EXPORT __attribute__ ((visibility ("default"))) -#endif - -// arg1: ip(in the xx.xx.xx.xx format) -// arg2: port(a short) -// return: NULL on failure, SUCCESS otherwise -extern "C" DLL_EXPORT const char* establish_connection(int n, char *v[]) -{ - // extract args - // ------------ - if(n < 2) return 0; - const char* ip = v[0]; - const char* port_s = v[1]; - unsigned short port = atoi(port_s); - - // set up network stuff - // -------------------- - #ifdef __WIN32 - WSADATA wsa; - WSAStartup(MAKEWORD(2,0),&wsa); - #endif - sock = socket(AF_INET,SOCK_DGRAM,0); - - // make the socket non-blocking - // ---------------------------- - #ifdef __WIN32 - unsigned long iMode=1; - ioctlsocket(sock,FIONBIO,&iMode); - #else - fcntl(sock, F_SETFL, O_NONBLOCK); - #endif - - // establish a connection to the server - // ------------------------------------ - memset(&addr,0,sizeof(SOCKADDR_IN)); - addr.sin_family=AF_INET; - addr.sin_port=htons(port); - - // convert the string representation of the ip to a byte representation - addr.sin_addr.s_addr=inet_addr(ip); - - return SUCCESS; -} - -// arg1: string message to send -// return: NULL on failure, SUCCESS otherwise -extern "C" DLL_EXPORT const char* send_message(int n, char *v[]) -{ - // extract the args - if(n < 1) return 0; - const char* msg = v[0]; - - // send the message - int rc = sendto(sock,msg,strlen(msg),0,(SOCKADDR*)&addr,sizeof(SOCKADDR)); - - // check for errors - if (rc != -1) { - return SUCCESS; - } - else { - return 0; - } -} - -// no args -// return: message if any received, NULL otherwise -extern "C" DLL_EXPORT const char* recv_message(int n, char *v[]) -{ - SOCKADDR_IN sender; // we will store the sender address here - - socklen_t sender_byte_length = sizeof(sender); - - // Try receiving messages until we receive one that's valid, or there are no more messages - while(1) { - int rc = recvfrom(sock, return_buffer, BUFFER_SIZE,0,(SOCKADDR*) &sender,&sender_byte_length); - if(rc > 0) { - // we could read something - - if(sender.sin_addr.s_addr != addr.sin_addr.s_addr) { - continue; // not our connection, ignore and try again - } else { - return_buffer[rc] = 0; // 0-terminate the string - return return_buffer; - } - } - else { - break; // no more messages, stop trying to receive - } - } - - return 0; -} diff --git a/DLLSocket/server_controller.py b/DLLSocket/server_controller.py deleted file mode 100644 index 943f37f6777..00000000000 --- a/DLLSocket/server_controller.py +++ /dev/null @@ -1,51 +0,0 @@ -import subprocess -import socket -import urlparse - -UDP_IP="127.0.0.1" -UDP_PORT=8019 - -sock = socket.socket( socket.AF_INET, # Internet - socket.SOCK_DGRAM ) # UDP -sock.bind( (UDP_IP,UDP_PORT) ) - -last_ticker_state = None - -def handle_message(data, addr): - global last_ticker_state - - params = urlparse.parse_qs(data) - print(data) - - try: - if params["type"][0] == "log" and str(params["log"][0]) and str(params["message"][0]): - open(params["log"][0],"a+").write(params["message"][0]+"\n") - except IOError: - pass - except KeyError: - pass - - try: - if params["type"][0] == "ticker_state" and str(params["message"][0]): - last_ticker_state = str(params["message"][0]) - except KeyError: - pass - - try: - if params["type"][0] == "startup" and last_ticker_state: - open("crashlog.txt","a+").write("Server exited, last ticker state was: "+last_ticker_state+"\n") - except KeyError: - pass - -sock.settimeout(60*6) # 10 minute timeout -while True: - try: - data, addr = sock.recvfrom( 1024 ) # buffer size is 1024 bytes - handle_message(data,addr) - except socket.timeout: - # try to start the server again - print("Server timed out.. attempting restart.") - if last_ticker_state: - open("crashmsg.txt","a+").write("Server crashed, trying to reboot. last ticker state: "+last_ticker_state+"\n") - subprocess.call("killall -9 DreamDaemon") - subprocess.call("./start") \ No newline at end of file diff --git a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm index c07960eab59..b3e72e8977c 100644 --- a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm +++ b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm @@ -858,6 +858,15 @@ icon_state = "floor4" }, /area/shuttle/syndicate) +"abK" = ( +/obj/structure/shuttle/engine/propulsion/burst, +/turf/simulated/floor/plating, +/turf/simulated/shuttle/wall{ + tag = "icon-swall_f5"; + icon_state = "swall_f5"; + dir = 2 + }, +/area/shuttle/pod_2) "abL" = ( /obj/structure/cable, /obj/structure/lattice/catwalk, @@ -1514,8 +1523,8 @@ /obj/structure/shuttle/engine/propulsion/burst, /turf/simulated/floor/plating, /turf/simulated/shuttle/wall{ - tag = "icon-swall_f5"; - icon_state = "swall_f5"; + tag = "icon-swall_f9"; + icon_state = "swall_f9"; dir = 2 }, /area/shuttle/pod_2) @@ -1596,14 +1605,22 @@ }, /area/security/permabrig) "adg" = ( -/obj/structure/shuttle/engine/propulsion/burst, -/turf/simulated/floor/plating, -/turf/simulated/shuttle/wall{ - tag = "icon-swall_f9"; - icon_state = "swall_f9"; - dir = 2 +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Head of Security's Desk"; + departmentType = 5; + name = "Head of Security RC"; + pixel_y = 30 }, -/area/shuttle/pod_2) +/obj/item/storage/secure/safe{ + pixel_x = 36; + pixel_y = 28 + }, +/obj/machinery/computer/card/minor/hos, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/hos) "adh" = ( /obj/machinery/door/airlock/shuttle{ name = "Escape Pod Airlock" @@ -1869,15 +1886,12 @@ "adH" = ( /obj/structure/rack, /obj/item/tank/jetpack/oxygen, -/obj/item/tank/air, -/obj/item/clothing/mask/breath, /obj/item/clothing/shoes/magboots, /obj/machinery/camera{ c_tag = "Engineering Secure Storage South"; dir = 4; network = list("SS13") }, -/obj/item/clothing/suit/space/hardsuit/security, /turf/simulated/floor/plasteel{ icon_state = "dark" }, @@ -2055,6 +2069,12 @@ icon_state = "dark" }, /area/security/permabrig) +"adZ" = ( +/obj/machinery/suit_storage_unit/security/secure, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/security/podbay) "aea" = ( /obj/machinery/atmospherics/unary/vent_scrubber{ dir = 4; @@ -3610,11 +3630,21 @@ /turf/simulated/wall/r_wall, /area/security/hos) "agE" = ( -/obj/machinery/space_heater, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/reagent_dispensers/peppertank{ + pixel_x = 30 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 27; + pixel_y = 29 + }, +/obj/machinery/suit_storage_unit/security/secure, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/security/podbay) +/area/security/hos) "agF" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable/yellow{ @@ -3853,23 +3883,12 @@ }, /area/security/armoury) "agZ" = ( -/obj/structure/table/wood, -/obj/machinery/requests_console{ - announcementConsole = 1; - department = "Head of Security's Desk"; - departmentType = 5; - name = "Head of Security RC"; - pixel_y = 30 - }, -/obj/machinery/computer/med_data/laptop, -/obj/item/storage/secure/safe{ - pixel_x = 36; - pixel_y = 28 - }, +/obj/machinery/atmospherics/unary/vent_pump, +/obj/machinery/space_heater, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/security/hos) +/area/security/podbay) "aha" = ( /obj/machinery/computer/prisoner, /turf/simulated/floor/plasteel{ @@ -4291,23 +4310,15 @@ }, /area/security/permabrig) "ahH" = ( -/obj/machinery/light{ - dir = 4 +/obj/structure/shuttle/engine/propulsion/burst{ + dir = 8 }, -/obj/structure/reagent_dispensers/peppertank{ - pixel_x = 30 +/turf/simulated/floor/plating, +/turf/simulated/shuttle/wall{ + icon_state = "swall_f6"; + dir = 2 }, -/obj/structure/extinguisher_cabinet{ - pixel_x = 27; - pixel_y = 29 - }, -/obj/structure/rack, -/obj/item/clothing/suit/space/hardsuit/security, -/obj/item/clothing/mask/gas/sechailer, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/hos) +/area/shuttle/pod_3) "ahI" = ( /obj/machinery/door_control{ id = "permacell2"; @@ -5380,21 +5391,26 @@ /turf/simulated/shuttle/floor4/vox, /area/shuttle/vox) "ajr" = ( +/obj/structure/window/reinforced, +/obj/structure/table, +/obj/item/storage/box/bodybags, +/obj/item/storage/box/masks, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whitered"; + tag = "icon-whitehall (WEST)" + }, +/area/security/brig) +"ajs" = ( /obj/structure/shuttle/engine/propulsion/burst{ dir = 8 }, /turf/simulated/floor/plating, /turf/simulated/shuttle/wall{ - icon_state = "swall_f6"; + icon_state = "swall_f5"; dir = 2 }, /area/shuttle/pod_3) -"ajs" = ( -/obj/machinery/atmospherics/unary/vent_pump, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/security/podbay) "ajt" = ( /obj/structure/rack, /obj/item/rcd, @@ -5496,6 +5512,19 @@ icon_state = "vault" }, /area/security/hos) +"ajA" = ( +/obj/structure/shuttle/engine/propulsion/burst{ + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "vault"; + dir = 5 + }, +/turf/simulated/shuttle/wall{ + icon_state = "swall_f6"; + dir = 2 + }, +/area/shuttle/pod_4) "ajB" = ( /turf/simulated/wall/r_wall, /area/maintenance/auxsolarport) @@ -5666,15 +5695,10 @@ }, /area/security/permabrig) "ajS" = ( -/obj/structure/shuttle/engine/propulsion/burst{ - dir = 8 - }, -/turf/simulated/floor/plating, -/turf/simulated/shuttle/wall{ - icon_state = "swall_f5"; - dir = 2 - }, -/area/shuttle/pod_3) +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/suit_storage_unit/engine/secure, +/turf/simulated/floor/plasteel, +/area/engine/engineering) "ajT" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable/yellow{ @@ -6173,6 +6197,16 @@ icon_state = "dark" }, /area/security/podbay) +"akP" = ( +/obj/machinery/camera{ + c_tag = "Engineering - Storage"; + dir = 2; + network = list("SS13") + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/suit_storage_unit/engine/secure, +/turf/simulated/floor/plasteel, +/area/engine/engineering) "akQ" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -6768,6 +6802,17 @@ }, /turf/simulated/floor/plating, /area/security/main) +"alQ" = ( +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/machinery/door/poddoor{ + density = 0; + icon_state = "open"; + id_tag = "Singularity"; + name = "Containment Blast Doors"; + opacity = 0 + }, +/turf/simulated/floor/plasteel, +/area/engine/engineering) "alR" = ( /obj/machinery/door/firedoor, /obj/structure/cable/yellow{ @@ -7713,6 +7758,15 @@ /obj/structure/window/reinforced, /turf/simulated/floor/plating, /area/maintenance/disposal) +"anx" = ( +/obj/effect/spawner/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/floor/plating, +/area/security/brig) "any" = ( /obj/effect/decal/warning_stripes/south, /turf/simulated/floor/plating, @@ -8952,6 +9006,32 @@ }, /turf/simulated/floor/plating, /area/maintenance/fore) +"apP" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/firedoor, +/obj/machinery/flasher{ + id = "secentranceflasher"; + pixel_x = 25 + }, +/obj/machinery/door/airlock/security/glass{ + id_tag = "outerbrig"; + name = "Brig"; + req_access_txt = "63" + }, +/obj/effect/mapping_helpers/airlock/unres{ + icon_state = "airlock_unres_helper"; + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "red"; + dir = 1 + }, +/area/security/brig) "apQ" = ( /obj/machinery/sleeper{ icon_state = "sleeper-open"; @@ -9075,6 +9155,11 @@ dir = 4 }, /area/security/brig) +"aqe" = ( +/obj/effect/decal/warning_stripes/west, +/obj/machinery/suit_storage_unit/engine/secure, +/turf/simulated/floor/plasteel, +/area/engine/engineering) "aqf" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 6 @@ -9230,6 +9315,16 @@ }, /turf/simulated/floor/plating, /area/maintenance/fore) +"aqv" = ( +/obj/machinery/alarm{ + dir = 4; + icon_state = "alarm0"; + pixel_x = -22 + }, +/obj/effect/decal/warning_stripes/southwest, +/obj/machinery/suit_storage_unit/engine/secure, +/turf/simulated/floor/plasteel, +/area/engine/engineering) "aqw" = ( /obj/structure/closet/crate, /obj/item/bodybag, @@ -10614,6 +10709,19 @@ icon_state = "dark" }, /area/engine/gravitygenerator) +"asL" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Primary Tool Storage" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel, +/area/storage/primary) "asM" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -11124,24 +11232,29 @@ name = "Port Maintenance" }) "atI" = ( -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 2 +/obj/structure/shuttle/engine/propulsion/burst{ + dir = 8 }, -/obj/structure/morgue, /turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "whitered"; - tag = "icon-whitehall (WEST)" + icon_state = "vault"; + dir = 5 }, -/area/security/brig) +/turf/simulated/shuttle/wall{ + icon_state = "swall_f5"; + dir = 2 + }, +/area/shuttle/pod_4) "atJ" = ( -/obj/structure/cable/yellow{ - d2 = 4; - icon_state = "0-4" - }, -/turf/simulated/wall, -/area/security/brig) +/obj/structure/table, +/obj/item/weldingtool, +/obj/item/crowbar, +/obj/item/stack/packageWrap, +/obj/item/stack/packageWrap, +/obj/item/stack/packageWrap, +/obj/item/stack/packageWrap, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel, +/area/storage/primary) "atK" = ( /turf/simulated/wall/r_wall, /area/security/main) @@ -13012,6 +13125,14 @@ dir = 1 }, /area/security/processing) +"axg" = ( +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/public/glass{ + name = "Primary Tool Storage" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel, +/area/storage/primary) "axh" = ( /turf/simulated/wall/r_wall, /area/maintenance/starboard) @@ -13574,8 +13695,10 @@ /area/crew_quarters/mrchangs) "ayc" = ( /obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 6 +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 4; + on = 1; + scrub_Toxins = 0 }, /turf/simulated/floor/plasteel{ dir = 1; @@ -13601,6 +13724,9 @@ /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 8 }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6 + }, /turf/simulated/floor/plasteel{ dir = 2; icon_state = "neutralcorner" @@ -13614,13 +13740,19 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4; + level = 1 + }, /turf/simulated/floor/wood, /area/crew_quarters/sleep) "ayg" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, /turf/simulated/floor/carpet, /area/crew_quarters/sleep) "ayh" = ( @@ -13842,6 +13974,17 @@ /area/maintenance/fpmaint2{ name = "Port Maintenance" }) +"ayE" = ( +/obj/machinery/alarm{ + dir = 4; + pixel_x = -23 + }, +/obj/machinery/drone_fabricator, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "yellow" + }, +/area/engine/engineering) "ayF" = ( /obj/structure/grille, /obj/structure/window/reinforced/tinted{ @@ -14177,12 +14320,6 @@ dir = 8; initialize_directions = 11 }, -/obj/machinery/atmospherics/unary/vent_scrubber{ - dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, /turf/simulated/floor/plasteel, /area/crew_quarters/sleep) "azk" = ( @@ -14200,12 +14337,6 @@ }, /turf/simulated/wall, /area/crew_quarters/sleep) -"azm" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 - }, -/turf/simulated/wall, -/area/crew_quarters/sleep) "azn" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -14290,6 +14421,17 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/simulated/floor/plating, /area/maintenance/starboard) +"azv" = ( +/obj/item/radio/intercom{ + dir = 4; + name = "Station Intercom (General)"; + pixel_y = 29 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/engineering) "azw" = ( /obj/effect/spawner/window/reinforced, /obj/structure/cable/yellow{ @@ -14447,6 +14589,21 @@ }, /turf/simulated/floor/plating/airless, /area/space/nearstation) +"azJ" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -1; + pixel_y = 5 + }, +/obj/item/pen{ + pixel_x = -3; + pixel_y = 5 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "yellow" + }, +/area/engine/engineering) "azK" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -14620,9 +14777,6 @@ /obj/machinery/light/small{ dir = 8 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, /obj/machinery/firealarm{ dir = 8; pixel_x = -26 @@ -14684,12 +14838,12 @@ /area/security/brig) "aAe" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, /obj/structure/extinguisher_cabinet{ pixel_x = 27 }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, /turf/simulated/floor/plasteel{ dir = 2; icon_state = "neutralcorner" @@ -15071,6 +15225,18 @@ icon_state = "red" }, /area/security/brig) +"aAO" = ( +/obj/machinery/computer/security/telescreen{ + dir = 4; + name = "MiniSat Monitor"; + network = list("MiniSat","tcomm"); + pixel_x = -29 + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/engine/engineering) "aAP" = ( /obj/structure/closet, /obj/effect/spawner/lootdrop/maintenance, @@ -15118,6 +15284,12 @@ /obj/effect/decal/warning_stripes/south, /turf/simulated/floor/plating, /area/maintenance/fore) +"aAW" = ( +/obj/structure/chair/office/dark{ + dir = 4 + }, +/turf/simulated/floor/plasteel, +/area/engine/engineering) "aAX" = ( /obj/structure/closet/crate, /obj/item/coin/silver, @@ -15618,13 +15790,18 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 8 + }, /turf/simulated/floor/wood, /area/crew_quarters/sleep) "aBQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, /turf/simulated/floor/wood, /area/crew_quarters/sleep) "aBR" = ( @@ -16354,19 +16531,21 @@ icon_state = "pipe-c" }, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 8; - initialize_directions = 11 + dir = 8 }, /turf/simulated/floor/plasteel, /area/crew_quarters/sleep) "aCY" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, /obj/machinery/light/small{ dir = 4 }, +/obj/structure/sign/pods{ + pixel_x = 30 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 9 + }, /turf/simulated/floor/plasteel{ dir = 2; icon_state = "neutralcorner" @@ -18481,36 +18660,9 @@ name = "Storage Wing" }) "aGz" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/door/firedoor, -/obj/machinery/flasher{ - id = "secentranceflasher"; - pixel_x = 25 - }, -/obj/machinery/door/airlock/security/glass{ - id_tag = "outerbrig"; - name = "Brig"; - req_access_txt = "63" - }, -/obj/effect/mapping_helpers/airlock/unres{ - icon_state = "airlock_unres_helper"; - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "red"; - dir = 1 - }, -/area/security/brig) +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel, +/area/crew_quarters/sleep) "aGA" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/security/glass{ @@ -18677,12 +18829,12 @@ dir = 4 }, /obj/machinery/hologram/holopad, -/turf/simulated/floor/plasteel, -/area/crew_quarters/sleep) -"aGQ" = ( /obj/structure/chair/stool{ pixel_y = 8 }, +/turf/simulated/floor/plasteel, +/area/crew_quarters/sleep) +"aGQ" = ( /obj/structure/disposalpipe/segment{ dir = 8; icon_state = "pipe-c" @@ -18696,20 +18848,19 @@ dir = 8; initialize_directions = 11 }, +/obj/effect/landmark/start{ + name = "Mime" + }, /turf/simulated/floor/plasteel, /area/crew_quarters/sleep) "aGS" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/turf/simulated/floor/plasteel{ - dir = 2; - icon_state = "neutralcorner" +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5 }, +/turf/simulated/floor/plasteel, /area/crew_quarters/sleep) "aGT" = ( /obj/structure/cable{ @@ -18720,23 +18871,25 @@ /turf/simulated/floor/plating/airless, /area/engine/engineering) "aGU" = ( -/obj/structure/closet/secure_closet/personal/cabinet, -/obj/machinery/alarm{ - pixel_y = 23 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, -/obj/item/clothing/under/suit_jacket/navy, -/turf/simulated/floor/carpet, +/obj/machinery/door/airlock/titanium/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4; + level = 1 + }, +/turf/simulated/floor/mineral/tranquillite, /area/crew_quarters/sleep) "aGV" = ( -/obj/item/clothing/glasses/meson, -/obj/structure/closet/crate, -/obj/item/poster/random_contraband, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 2; - name = "2maintenance loot spawner" +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, -/turf/simulated/floor/plating, -/area/maintenance/starboard) +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/mineral/tranquillite, +/area/crew_quarters/sleep) "aGW" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -18747,16 +18900,15 @@ /turf/simulated/floor/plating, /area/maintenance/starboard) "aGX" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = -29 }, -/obj/item/clothing/shoes/magboots, -/obj/item/clothing/suit/space/hardsuit/engine, -/obj/item/clothing/mask/breath, -/obj/effect/decal/warning_stripes/yellow/hollow, -/turf/simulated/floor/plasteel, -/area/engine/engineering) +/obj/machinery/suit_storage_unit/ce/secure, +/turf/simulated/floor/plasteel{ + icon_state = "vault"; + dir = 5 + }, +/area/engine/chiefs_office) "aGY" = ( /obj/item/stack/ore/silver, /obj/item/stack/ore/silver, @@ -18882,6 +19034,21 @@ "aHk" = ( /turf/simulated/wall, /area/construction) +"aHl" = ( +/obj/structure/table, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/requests_console{ + department = "Security"; + departmentType = 5; + pixel_x = 30 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "yellow" + }, +/area/engine/engineering) "aHm" = ( /obj/structure/closet/crate, /obj/item/coin/silver, @@ -18976,6 +19143,21 @@ /area/maintenance/fpmaint2{ name = "Port Maintenance" }) +"aHw" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "Drone Fabricator APC"; + pixel_x = -24 + }, +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "yellow" + }, +/area/engine/engineering) "aHx" = ( /obj/structure/closet/crate, /obj/structure/extinguisher_cabinet{ @@ -19367,14 +19549,13 @@ /turf/simulated/floor/plating, /area/bridge) "aIc" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/sign/pods{ - pixel_x = 30 - }, -/turf/simulated/floor/plasteel{ - dir = 2; - icon_state = "neutralcorner" +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 8; + on = 1; + scrub_N2O = 0; + scrub_Toxins = 0 }, +/turf/simulated/floor/mineral/tranquillite, /area/crew_quarters/sleep) "aId" = ( /obj/machinery/door/airlock{ @@ -19462,9 +19643,17 @@ /turf/simulated/floor/plasteel, /area/crew_quarters/sleep) "aIm" = ( -/obj/structure/table, -/obj/item/storage/pill_bottle/dice, -/turf/simulated/floor/plasteel, +/obj/machinery/alarm{ + pixel_y = 23 + }, +/obj/structure/chair/office/light, +/obj/effect/landmark/start{ + name = "Mime" + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/mineral/tranquillite, /area/crew_quarters/sleep) "aIn" = ( /obj/structure/table, @@ -19472,62 +19661,55 @@ /turf/simulated/floor/plasteel, /area/crew_quarters/sleep) "aIo" = ( +/obj/machinery/newscaster{ + pixel_y = 32 + }, +/obj/structure/closet/secure_closet/mime, +/turf/simulated/floor/mineral/tranquillite, +/area/crew_quarters/sleep) +"aIp" = ( /obj/structure/table, +/obj/item/storage/pill_bottle/dice, /obj/item/toy/cards/deck, /turf/simulated/floor/plasteel, /area/crew_quarters/sleep) -"aIp" = ( -/obj/structure/chair/stool{ - pixel_y = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/plasteel, -/area/crew_quarters/sleep) "aIq" = ( -/obj/machinery/door/airlock{ - id_tag = "Cabin6"; - name = "Cabin 2" - }, +/obj/structure/statue/tranquillite/mime, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 + dir = 5 }, -/turf/simulated/floor/wood, +/turf/simulated/floor/mineral/tranquillite, /area/crew_quarters/sleep) "aIr" = ( -/obj/effect/landmark{ - name = "xeno_spawn"; - pixel_x = -1 +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 28 }, +/turf/simulated/wall, +/area/crew_quarters/sleep) +"aIs" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/turf/simulated/floor/carpet, +/obj/item/flag/mime, +/turf/simulated/floor/mineral/tranquillite, /area/crew_quarters/sleep) -"aIs" = ( +"aIt" = ( /obj/machinery/atmospherics/unary/vent_pump{ dir = 8; on = 1 }, -/turf/simulated/floor/carpet, -/area/crew_quarters/sleep) -"aIt" = ( -/obj/machinery/light/small, -/turf/simulated/floor/carpet, +/obj/structure/table/wood, +/obj/item/storage/fancy/crayons, +/obj/item/toy/crayon/mime, +/turf/simulated/floor/mineral/tranquillite, /area/crew_quarters/sleep) "aIu" = ( -/obj/machinery/camera{ - c_tag = "Engineering - Storage"; - dir = 2; - network = list("SS13") +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" }, -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/clothing/shoes/magboots, -/obj/item/clothing/suit/space/hardsuit/engine, -/obj/item/clothing/mask/breath, -/obj/effect/decal/warning_stripes/yellow/hollow, /turf/simulated/floor/plasteel, /area/engine/engineering) "aIv" = ( @@ -19800,24 +19982,12 @@ /turf/simulated/floor/plasteel, /area/engine/engineering) "aIT" = ( -/obj/structure/bed, -/obj/item/bedsheet, -/obj/machinery/door_control{ - id = "Cabin6"; - name = "Dorm Bolt Control"; - normaldoorcontrol = 1; - pixel_x = -25; - req_access_txt = "0"; - specialfunctions = 4 - }, -/obj/effect/decal/cleanable/cobweb, -/obj/machinery/atmospherics/unary/vent_scrubber{ - dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/simulated/floor/carpet, +/obj/machinery/light/small, +/obj/structure/table/wood, +/obj/item/flashlight/lamp/green, +/obj/item/paper_bin, +/obj/item/pen/multi, +/turf/simulated/floor/mineral/tranquillite, /area/crew_quarters/sleep) "aIU" = ( /obj/effect/decal/warning_stripes/west, @@ -20293,15 +20463,14 @@ /turf/simulated/floor/plasteel, /area/crew_quarters/sleep) "aJH" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 28 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, -/turf/simulated/floor/plasteel{ - dir = 2; - icon_state = "neutralcorner" +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6; + level = 1 }, +/turf/simulated/floor/plasteel, /area/crew_quarters/sleep) "aJI" = ( /obj/machinery/portable_atmospherics/canister/oxygen, @@ -20326,6 +20495,16 @@ }, /turf/simulated/floor/plating/airless, /area/space/nearstation) +"aJK" = ( +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 2 + }, +/obj/machinery/door/airlock/bananium/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep) "aJL" = ( /obj/effect/decal/warning_stripes/southwest, /turf/simulated/floor/plasteel, @@ -21178,41 +21357,24 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, +/obj/effect/landmark/start{ + name = "Clown" + }, /turf/simulated/floor/plasteel{ dir = 2; icon_state = "neutralcorner" }, /area/crew_quarters/sleep) "aLi" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 2 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, -/turf/simulated/floor/plasteel{ - dir = 2; - icon_state = "neutralcorner" +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 }, +/turf/simulated/floor/wood, /area/crew_quarters/sleep) "aLj" = ( -/obj/machinery/door/airlock{ - id_tag = "Cabin7"; - name = "Cabin 1" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/wood, -/area/crew_quarters/sleep) -"aLk" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/wood, -/area/crew_quarters/sleep) -"aLl" = ( -/obj/effect/landmark{ - name = "xeno_spawn"; - pixel_x = -1 - }, /obj/machinery/alarm{ pixel_y = 23 }, @@ -21223,12 +21385,32 @@ dir = 8; on = 1 }, +/obj/structure/chair/office/dark, +/obj/effect/landmark/start{ + name = "Clown" + }, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep) +"aLk" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/wood, +/area/crew_quarters/sleep) +"aLl" = ( +/obj/structure/closet/secure_closet/clown, /turf/simulated/floor/wood, /area/crew_quarters/sleep) "aLm" = ( -/obj/structure/closet/secure_closet/personal/cabinet, -/obj/item/clothing/under/assistantformal, -/turf/simulated/floor/wood, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 2; + initialize_directions = 11 + }, +/obj/structure/closet/wardrobe/pjs, +/turf/simulated/floor/plasteel{ + tag = "icon-vault"; + icon_state = "vault" + }, /area/crew_quarters/sleep) "aLn" = ( /obj/structure/cable{ @@ -21863,9 +22045,10 @@ }, /area/crew_quarters/sleep) "aMw" = ( -/obj/structure/closet/wardrobe/pjs, +/obj/structure/closet/secure_closet/personal, +/obj/item/clothing/under/assistantformal, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 + dir = 9 }, /turf/simulated/floor/plasteel{ tag = "icon-vault"; @@ -21873,16 +22056,14 @@ }, /area/crew_quarters/sleep) "aMx" = ( -/obj/structure/closet/secure_closet/personal, -/obj/item/clothing/under/assistantformal, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 2; - initialize_directions = 11 - }, -/turf/simulated/floor/plasteel{ - tag = "icon-vault"; - icon_state = "vault" +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 8; + on = 1; + scrub_N2O = 0; + scrub_Toxins = 0 }, +/obj/item/flag/clown, +/turf/simulated/floor/wood, /area/crew_quarters/sleep) "aMy" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ @@ -21914,29 +22095,29 @@ name = "\improper Warehouse" }) "aMA" = ( -/obj/structure/chair/wood{ - dir = 4 - }, +/obj/structure/table/wood, +/obj/item/stamp/clown, +/obj/item/reagent_containers/food/snacks/pie, +/obj/item/toy/crayon/rainbow, /turf/simulated/floor/wood, /area/crew_quarters/sleep) "aMB" = ( -/obj/structure/table/wood, /obj/machinery/newscaster{ pixel_x = 29; pixel_y = 1 }, -/obj/item/paper, +/obj/structure/table/wood, +/obj/item/flashlight/lamp/bananalamp, /turf/simulated/floor/wood, /area/crew_quarters/sleep) "aMC" = ( -/obj/structure/closet, -/obj/item/storage/box/donkpockets, -/obj/effect/spawner/lootdrop/maintenance{ - lootcount = 2; - name = "2maintenance loot spawner" +/obj/structure/statue/bananium/clown, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5; + level = 1 }, -/turf/simulated/floor/plating, -/area/maintenance/starboard) +/turf/simulated/floor/wood, +/area/crew_quarters/sleep) "aMD" = ( /obj/structure/disposalpipe/sortjunction{ dir = 1; @@ -23096,7 +23277,7 @@ /area/storage/tools) "aOE" = ( /mob/living/simple_animal/slime, -/turf/simulated/floor/plasteel, +/turf/simulated/floor/engine, /area/toxins/xenobiology{ name = "\improper Secure Lab" }) @@ -23926,24 +24107,14 @@ }, /area/turret_protected/ai_upload) "aQi" = ( -/obj/machinery/door_control{ - id = "Cabin7"; - name = "Door Bolt Control"; - normaldoorcontrol = 1; - pixel_x = -25; - req_access_txt = "0"; - specialfunctions = 4 +/obj/structure/rack, +/obj/item/clothing/suit/storage/hazardvest, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" }, -/obj/structure/bed, -/obj/item/bedsheet, -/obj/machinery/atmospherics/unary/vent_scrubber{ - dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/simulated/floor/wood, -/area/crew_quarters/sleep) +/turf/simulated/floor/plating, +/area/maintenance/starboard) "aQj" = ( /obj/structure/sign/kiddieplaque{ pixel_y = 32 @@ -24965,8 +25136,12 @@ name = "\improper Garden" }) "aSf" = ( -/obj/structure/rack, -/obj/item/clothing/suit/storage/hazardvest, +/obj/item/storage/box/donkpockets, +/obj/structure/closet, +/obj/effect/spawner/lootdrop/maintenance{ + lootcount = 2; + name = "2maintenance loot spawner" + }, /turf/simulated/floor/plating, /area/maintenance/starboard) "aSg" = ( @@ -26063,19 +26238,21 @@ /turf/simulated/floor/plasteel, /area/quartermaster/storage) "aUe" = ( -/obj/structure/table, -/obj/item/weldingtool, -/obj/item/crowbar, -/obj/item/stack/packageWrap, -/obj/item/stack/packageWrap, -/obj/item/stack/packageWrap, -/obj/item/stack/packageWrap, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/plasteel{ - dir = 2; - icon_state = "browncorner" +/obj/machinery/light_switch{ + pixel_x = -25 }, -/area/storage/primary) +/obj/machinery/alarm{ + pixel_y = 23 + }, +/obj/structure/chair/stool, +/turf/simulated/floor/plasteel{ + tag = "icon-cafeteria (NORTHEAST)"; + icon_state = "cafeteria"; + dir = 5 + }, +/area/quartermaster/office{ + name = "\improper Cargo Office" + }) "aUf" = ( /obj/item/reagent_containers/spray/plantbgone, /obj/item/reagent_containers/glass/bottle/nutrient/ez, @@ -27315,10 +27492,24 @@ /turf/simulated/floor/plasteel, /area/crew_quarters/courtroom) "aWj" = ( -/obj/effect/spawner/window/reinforced, -/turf/simulated/floor/plating, -/area/security/checkpoint/supply{ - name = "Security Post - Cargo" +/obj/machinery/power/apc{ + dir = 1; + name = "Cargo Break Room APC"; + pixel_x = 1; + pixel_y = 24 + }, +/obj/structure/cable/yellow{ + d2 = 2; + icon_state = "0-2" + }, +/obj/structure/table/glass, +/turf/simulated/floor/plasteel{ + tag = "icon-cafeteria (NORTHEAST)"; + icon_state = "cafeteria"; + dir = 5 + }, +/area/quartermaster/office{ + name = "\improper Cargo Office" }) "aWk" = ( /obj/machinery/door_control{ @@ -27479,6 +27670,20 @@ /obj/effect/decal/cleanable/fungus, /turf/simulated/wall, /area/maintenance/fore) +"aWw" = ( +/obj/item/radio/intercom{ + frequency = 1459; + name = "Station Intercom (General)"; + pixel_y = 21 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "yellow" + }, +/area/engine/break_room) "aWx" = ( /obj/machinery/door/airlock/maintenance{ name = "Storage Room"; @@ -27540,18 +27745,15 @@ name = "Arrivals" }) "aWE" = ( -/obj/structure/shuttle/engine/propulsion/burst{ - dir = 8 +/obj/structure/window/reinforced{ + dir = 1; + pixel_y = 2 }, -/turf/simulated/floor/plasteel{ - icon_state = "vault"; - dir = 5 - }, -/turf/simulated/shuttle/wall{ - icon_state = "swall_f6"; - dir = 2 - }, -/area/shuttle/pod_4) +/obj/machinery/suit_storage_unit/captain/secure, +/turf/simulated/floor/wood, +/area/crew_quarters/captain{ + name = "\improper Captain's Quarters" + }) "aWF" = ( /obj/machinery/door/airlock/shuttle{ name = "Escape Pod Airlock" @@ -27563,18 +27765,14 @@ /turf/simulated/shuttle/floor, /area/shuttle/pod_1) "aWG" = ( -/obj/structure/shuttle/engine/propulsion/burst{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "vault"; - dir = 5 - }, +/obj/structure/shuttle/engine/propulsion/burst, +/turf/simulated/floor/plating, /turf/simulated/shuttle/wall{ + tag = "icon-swall_f5"; icon_state = "swall_f5"; dir = 2 }, -/area/shuttle/pod_4) +/area/shuttle/pod_1) "aWH" = ( /obj/machinery/atmospherics/unary/vent_scrubber{ dir = 4; @@ -28398,9 +28596,22 @@ name = "Port Maintenance" }) "aYn" = ( -/turf/simulated/wall, -/area/security/checkpoint/supply{ - name = "Security Post - Cargo" +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/requests_console{ + department = "Security"; + departmentType = 5; + pixel_y = 30 + }, +/obj/structure/chair/stool, +/turf/simulated/floor/plasteel{ + tag = "icon-cafeteria (NORTHEAST)"; + icon_state = "cafeteria"; + dir = 5 + }, +/area/quartermaster/office{ + name = "\improper Cargo Office" }) "aYo" = ( /obj/machinery/conveyor_switch/oneway{ @@ -29153,43 +29364,24 @@ }, /area/turret_protected/ai_upload) "aZy" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "Security Post - Cargo APC"; - pixel_x = 1; - pixel_y = 24 - }, -/obj/structure/cable/yellow{ - d2 = 2; - icon_state = "0-2" - }, +/obj/item/flag/cargo, /turf/simulated/floor/plasteel{ - icon_state = "red"; - dir = 1 + tag = "icon-cafeteria (NORTHEAST)"; + icon_state = "cafeteria"; + dir = 5 }, -/area/security/checkpoint/supply{ - name = "Security Post - Cargo" +/area/quartermaster/office{ + name = "\improper Cargo Office" }) "aZz" = ( -/obj/item/screwdriver{ - pixel_y = 10 +/obj/structure/shuttle/engine/propulsion/burst, +/turf/simulated/floor/plating, +/turf/simulated/shuttle/wall{ + tag = "icon-swall_f9"; + icon_state = "swall_f9"; + dir = 2 }, -/obj/item/radio/off, -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/requests_console{ - department = "Security"; - departmentType = 5; - pixel_y = 30 - }, -/turf/simulated/floor/plasteel{ - icon_state = "red"; - dir = 1 - }, -/area/security/checkpoint/supply{ - name = "Security Post - Cargo" - }) +/area/shuttle/pod_1) "aZA" = ( /obj/structure/table, /obj/item/hatchet, @@ -29301,11 +29493,6 @@ /area/turret_protected/ai_upload_foyer) "aZM" = ( /obj/machinery/door/firedoor, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, /obj/machinery/door/airlock/engineering/glass{ name = "Power Monitoring"; req_access_txt = "32" @@ -29772,15 +29959,40 @@ /turf/simulated/floor/plating, /area/maintenance/starboard) "baE" = ( -/obj/structure/rack{ - dir = 8; - layer = 2.9 +/obj/machinery/camera/autoname{ + dir = 4; + network = list("SS13") + }, +/obj/machinery/door_control{ + desc = "A remote control-switch for the engineering security doors."; + id = "Engineering"; + name = "Engineering Lockdown"; + pixel_x = -24; + pixel_y = -6; + req_access_txt = "1" + }, +/obj/machinery/door_control{ + id = "atmos"; + name = "Atmospherics Lockdown"; + pixel_x = -24; + pixel_y = 5; + req_access_txt = "1" + }, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/obj/machinery/atmospherics/unary/vent_pump{ + dir = 4; + external_pressure_bound = 101.325; + on = 1; + pressure_checks = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "yellow" }, -/obj/item/clothing/shoes/magboots, -/obj/item/clothing/suit/space/hardsuit/engine, -/obj/item/clothing/mask/breath, -/obj/effect/decal/warning_stripes/west, -/turf/simulated/floor/plasteel, /area/engine/engineering) "baF" = ( /obj/machinery/light{ @@ -29972,61 +30184,62 @@ d2 = 8; icon_state = "4-8" }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - name = "Security Post - Cargo"; - req_access_txt = "63" +/turf/simulated/floor/plasteel{ + tag = "icon-cafeteria (NORTHEAST)"; + icon_state = "cafeteria"; + dir = 5 }, -/turf/simulated/floor/plasteel, -/area/security/checkpoint/supply{ - name = "Security Post - Cargo" +/area/quartermaster/office{ + name = "\improper Cargo Office" }) "baZ" = ( -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel{ - icon_state = "red"; - dir = 8 - }, -/area/security/checkpoint/supply{ - name = "Security Post - Cargo" - }) -"bba" = ( /obj/structure/cable/yellow{ d1 = 1; d2 = 8; icon_state = "1-8" }, -/turf/simulated/floor/plasteel, -/area/security/checkpoint/supply{ - name = "Security Post - Cargo" +/turf/simulated/floor/plasteel{ + tag = "icon-cafeteria (NORTHEAST)"; + icon_state = "cafeteria"; + dir = 5 + }, +/area/quartermaster/office{ + name = "\improper Cargo Office" }) -"bbb" = ( -/obj/structure/chair/office/dark, +"bba" = ( /obj/machinery/atmospherics/unary/vent_pump{ dir = 2; on = 1 }, -/turf/simulated/floor/plasteel, -/area/security/checkpoint/supply{ - name = "Security Post - Cargo" +/turf/simulated/floor/plasteel{ + tag = "icon-cafeteria (NORTHEAST)"; + icon_state = "cafeteria"; + dir = 5 + }, +/area/quartermaster/office{ + name = "\improper Cargo Office" }) -"bbc" = ( +"bbb" = ( /obj/item/radio/intercom{ dir = 4; name = "Station Intercom (General)"; pixel_x = 27 }, -/obj/machinery/computer/security/mining, /turf/simulated/floor/plasteel{ - icon_state = "red"; + tag = "icon-cafeteria (NORTHEAST)"; + icon_state = "cafeteria"; + dir = 5 + }, +/area/quartermaster/office{ + name = "\improper Cargo Office" + }) +"bbc" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/area/security/checkpoint/supply{ - name = "Security Post - Cargo" +/turf/simulated/wall, +/area/quartermaster/office{ + name = "\improper Cargo Office" }) "bbd" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -30416,19 +30629,26 @@ /turf/simulated/floor/plasteel, /area/engine/engineering) "bbP" = ( -/obj/structure/closet/secure_closet/security/cargo, -/obj/machinery/light_switch{ - pixel_x = -25 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, -/obj/machinery/alarm{ - pixel_y = 23 +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -4; + pixel_y = 10 }, +/obj/item/pen{ + pixel_x = 4; + pixel_y = 4 + }, +/obj/item/toy/figure/cargotech, /turf/simulated/floor/plasteel{ - icon_state = "red"; - dir = 9 + dir = 2; + icon_state = "whitehall"; + tag = "icon-whitehall (WEST)" }, -/area/security/checkpoint/supply{ - name = "Security Post - Cargo" +/area/quartermaster/office{ + name = "\improper Cargo Office" }) "bbQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -30460,16 +30680,22 @@ name = "Arrivals" }) "bbT" = ( -/obj/structure/filingcabinet, -/obj/structure/reagent_dispensers/peppertank{ - pixel_x = 30 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, +/obj/machinery/camera{ + c_tag = "Security Post - Cargo"; + dir = 1; + network = list("SS13") + }, +/obj/machinery/vending/cola, /turf/simulated/floor/plasteel{ - icon_state = "red"; - dir = 5 + dir = 2; + icon_state = "whitehall"; + tag = "icon-whitehall (WEST)" }, -/area/security/checkpoint/supply{ - name = "Security Post - Cargo" +/area/quartermaster/office{ + name = "\improper Cargo Office" }) "bbU" = ( /obj/structure/cable{ @@ -30662,20 +30888,32 @@ /turf/simulated/floor/plating, /area/maintenance/starboard) "bck" = ( -/obj/machinery/alarm{ - dir = 4; - icon_state = "alarm0"; - pixel_x = -22 +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, -/obj/structure/rack{ - dir = 8; - layer = 2.9 +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6; + level = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 2; + icon_state = "yellow" }, -/obj/item/clothing/shoes/magboots, -/obj/item/clothing/suit/space/hardsuit/engine, -/obj/item/clothing/mask/breath, -/obj/effect/decal/warning_stripes/southwest, -/turf/simulated/floor/plasteel, /area/engine/engineering) "bcl" = ( /obj/machinery/atmospherics/unary/vent_scrubber{ @@ -30874,27 +31112,30 @@ name = "Arrivals" }) "bcz" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 +/obj/machinery/newscaster{ + pixel_y = -32 }, -/turf/simulated/wall, -/area/security/checkpoint/supply{ - name = "Security Post - Cargo" +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9 + }, +/obj/machinery/vending/coffee, +/turf/simulated/floor/plasteel{ + dir = 2; + icon_state = "whitehall"; + tag = "icon-whitehall (WEST)" + }, +/area/quartermaster/office{ + name = "\improper Cargo Office" }) "bcA" = ( -/obj/machinery/recharger{ - pixel_y = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/table/reinforced, +/obj/machinery/vending/cigarette, /turf/simulated/floor/plasteel{ - icon_state = "red"; - dir = 10 + dir = 2; + icon_state = "whitehall"; + tag = "icon-whitehall (WEST)" }, -/area/security/checkpoint/supply{ - name = "Security Post - Cargo" +/area/quartermaster/office{ + name = "\improper Cargo Office" }) "bcB" = ( /obj/structure/cable/yellow{ @@ -30926,13 +31167,20 @@ /turf/simulated/floor/plasteel, /area/engine/engineering) "bcD" = ( -/obj/machinery/computer/secure_data, -/turf/simulated/floor/plasteel{ - icon_state = "red"; - dir = 6 +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" }, -/area/security/checkpoint/supply{ - name = "Security Post - Cargo" +/obj/machinery/door/firedoor, +/obj/machinery/door/airlock/mining/glass{ + name = "Cargo Break Room"; + req_access_txt = "0"; + req_one_access_txt = "48;50" + }, +/turf/simulated/floor/plasteel, +/area/quartermaster/office{ + name = "\improper Cargo Office" }) "bcE" = ( /obj/machinery/power/apc{ @@ -31562,8 +31810,24 @@ /turf/simulated/floor/plasteel, /area/engine/chiefs_office) "bdE" = ( -/turf/simulated/wall, -/area/security/checkpoint/engineering) +/obj/machinery/keycard_auth{ + pixel_x = -25; + pixel_y = 25 + }, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_y = 32 + }, +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 + }, +/obj/machinery/computer/card/minor/ce, +/turf/simulated/floor/plasteel{ + tag = "icon-vault"; + icon_state = "vault" + }, +/area/engine/chiefs_office) "bdF" = ( /obj/machinery/light/small{ dir = 1 @@ -31734,19 +31998,6 @@ /obj/effect/decal/warning_stripes/northwestcorner, /turf/simulated/floor/plasteel, /area/hallway/primary/central) -"bdV" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/public/glass{ - name = "Primary Tool Storage" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/plasteel, -/area/storage/primary) "bdW" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -32622,24 +32873,19 @@ /turf/simulated/floor/plasteel, /area/quartermaster/storage) "bfr" = ( -/obj/structure/bookcase/manuals/engineering, -/obj/machinery/keycard_auth{ - pixel_x = -25; - pixel_y = 25 - }, -/obj/machinery/status_display{ - density = 0; - layer = 4; - pixel_y = 32 - }, -/obj/structure/extinguisher_cabinet{ - pixel_x = -27 +/obj/machinery/computer/security/telescreen{ + desc = "Used for monitoring the singularity engine safely."; + dir = 8; + name = "Singularity Monitor"; + network = list("Singulo"); + pixel_x = 32 }, +/obj/machinery/computer/drone_control, /turf/simulated/floor/plasteel{ - tag = "icon-vault"; - icon_state = "vault" + dir = 4; + icon_state = "yellow" }, -/area/engine/chiefs_office) +/area/engine/engineering) "bfs" = ( /obj/machinery/atmospherics/unary/vent_scrubber{ dir = 2; @@ -33431,27 +33677,18 @@ }, /turf/simulated/floor/plasteel, /area/quartermaster/storage) -"bgD" = ( -/obj/item/book/manual/security_space_law, -/obj/machinery/newscaster{ - pixel_y = -32 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 - }, -/obj/structure/table/reinforced, -/turf/simulated/floor/plasteel{ - icon_state = "red" - }, -/area/security/checkpoint/supply{ - name = "Security Post - Cargo" - }) "bgE" = ( -/obj/structure/chair/office/dark{ - dir = 4 +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, +/obj/machinery/door/airlock/engineering, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel, -/area/security/checkpoint/engineering) +/area/engine/engineering) "bgF" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -33522,6 +33759,11 @@ }, /turf/simulated/floor/plasteel, /area/quartermaster/storage) +"bgL" = ( +/obj/effect/decal/warning_stripes/west, +/obj/structure/closet/secure_closet/atmos_personal, +/turf/simulated/floor/plasteel, +/area/atmos) "bgM" = ( /obj/structure/window/reinforced{ dir = 4 @@ -34223,28 +34465,16 @@ name = "\improper Cargo Office" }) "bhY" = ( -/obj/machinery/power/apc{ - dir = 8; - name = "Engineering Security APC"; - pixel_x = -24 - }, -/obj/structure/cable/yellow{ - d2 = 4; - icon_state = "0-4" - }, +/obj/machinery/suit_storage_unit/atmos, /turf/simulated/floor/plasteel{ - icon_state = "red"; - dir = 8 + icon_state = "dark" }, -/area/security/checkpoint/engineering) +/area/atmos) "bhZ" = ( -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/turf/simulated/floor/plasteel, -/area/security/checkpoint/engineering) +/obj/effect/spawner/window/reinforced, +/obj/structure/cable/yellow, +/turf/simulated/floor/plating, +/area/engine/engineering) "bia" = ( /obj/machinery/power/apc{ dir = 8; @@ -34552,37 +34782,22 @@ name = "Customs" }) "biz" = ( -/obj/structure/filingcabinet, -/obj/structure/reagent_dispensers/peppertank{ - pixel_y = 30 - }, -/obj/machinery/alarm{ - dir = 4; - pixel_x = -23 - }, -/turf/simulated/floor/plasteel{ - icon_state = "red"; - dir = 9 - }, -/area/security/checkpoint/engineering) +/obj/effect/decal/warning_stripes/southwest, +/obj/structure/closet/wardrobe/atmospherics_yellow, +/obj/item/flashlight, +/turf/simulated/floor/plasteel, +/area/atmos) "biA" = ( -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -1; - pixel_y = 5 +/obj/item/radio/intercom{ + frequency = 1459; + name = "Station Intercom (General)"; + pixel_y = 28 }, -/obj/item/pen{ - pixel_x = -3; - pixel_y = 5 - }, -/obj/machinery/newscaster/security_unit{ - pixel_x = 30 - }, -/turf/simulated/floor/plasteel{ - icon_state = "red"; - dir = 5 - }, -/area/security/checkpoint/engineering) +/obj/effect/decal/warning_stripes/southeast, +/obj/structure/closet/wardrobe/atmospherics_yellow, +/obj/item/flashlight, +/turf/simulated/floor/plasteel, +/area/atmos) "biB" = ( /obj/machinery/atmospherics/pipe/simple/visible{ dir = 2 @@ -34678,20 +34893,18 @@ /turf/simulated/floor/plasteel, /area/quartermaster/storage) "biJ" = ( -/obj/structure/table, -/obj/item/radio/intercom{ - dir = 4; - name = "Station Intercom (General)"; - pixel_y = 29 +/obj/machinery/light_switch{ + pixel_y = 28 }, -/obj/machinery/recharger{ - pixel_y = 4 +/obj/machinery/atmospherics/pipe/simple/visible/purple{ + dir = 6 }, +/obj/machinery/suit_storage_unit/atmos, /turf/simulated/floor/plasteel{ - icon_state = "red"; - dir = 1 + dir = 9; + icon_state = "caution" }, -/area/security/checkpoint/engineering) +/area/atmos) "biK" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -35313,66 +35526,36 @@ }, /area/hallway/primary/port) "bjK" = ( -/obj/machinery/atmospherics/unary/vent_pump{ - on = 1 - }, -/obj/machinery/camera/autoname{ - dir = 4; - network = list("SS13") - }, -/obj/machinery/door_control{ - desc = "A remote control-switch for the engineering security doors."; - id = "Engineering"; - name = "Engineering Lockdown"; - pixel_x = -24; - pixel_y = -6; - req_access_txt = "1" - }, -/obj/machinery/door_control{ - id = "atmos"; - name = "Atmospherics Lockdown"; - pixel_x = -24; - pixel_y = 5; - req_access_txt = "1" - }, -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; - icon_state = "2-4" +/obj/machinery/atmospherics/pipe/simple/visible/purple{ + dir = 4 }, +/obj/machinery/suit_storage_unit/atmos, /turf/simulated/floor/plasteel{ - icon_state = "red"; - dir = 10 + dir = 1; + icon_state = "caution" }, -/area/security/checkpoint/engineering) +/area/atmos) "bjL" = ( -/obj/machinery/atmospherics/unary/vent_scrubber{ - dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 +/obj/effect/spawner/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, /obj/structure/cable/yellow{ - d1 = 1; + d1 = 0; d2 = 2; - icon_state = "1-2" + icon_state = "0-2" }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/turf/simulated/floor/plasteel{ - icon_state = "red" - }, -/area/security/checkpoint/engineering) +/turf/simulated/floor/plating, +/area/engine/break_room) "bjM" = ( -/obj/structure/closet/secure_closet/security/engine, +/obj/effect/spawner/window/reinforced, +/obj/structure/cable/yellow, +/turf/simulated/floor/plating, +/area/engine/break_room) +"bjN" = ( +/turf/simulated/wall, +/area/engine/break_room) +"bjO" = ( /obj/machinery/firealarm{ dir = 4; pixel_x = 24 @@ -35382,46 +35565,32 @@ d2 = 8; icon_state = "2-8" }, -/turf/simulated/floor/plasteel{ - icon_state = "red"; - dir = 6 +/obj/machinery/computer/monitor, +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" }, -/area/security/checkpoint/engineering) -"bjN" = ( -/turf/simulated/wall, -/area/engine/break_room) -"bjO" = ( -/obj/item/screwdriver{ - pixel_y = 10 - }, -/obj/item/radio/off, -/obj/machinery/computer/security/telescreen{ - dir = 4; - name = "MiniSat Monitor"; - network = list("MiniSat","tcomm"); - pixel_x = -29 +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 8; + on = 1; + scrub_N2O = 0; + scrub_Toxins = 0 }, /turf/simulated/floor/plasteel{ - icon_state = "red"; - dir = 8 + dir = 6; + icon_state = "yellow" }, -/area/security/checkpoint/engineering) +/area/engine/engineering) "bjP" = ( -/obj/structure/table, -/obj/item/book/manual/security_space_law, -/obj/machinery/light{ +/obj/effect/spawner/window/reinforced, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, -/obj/machinery/requests_console{ - department = "Security"; - departmentType = 5; - pixel_x = 30 - }, -/turf/simulated/floor/plasteel{ - icon_state = "red"; - dir = 4 - }, -/area/security/checkpoint/engineering) +/obj/structure/cable/yellow, +/turf/simulated/floor/plating, +/area/security/checkpoint2{ + name = "Customs" + }) "bjQ" = ( /turf/simulated/floor/plasteel{ icon_state = "vault"; @@ -35592,14 +35761,18 @@ }, /area/shuttle/arrival/station) "bkj" = ( -/obj/structure/shuttle/engine/propulsion/burst, -/turf/simulated/floor/plating, -/turf/simulated/shuttle/wall{ - tag = "icon-swall_f5"; - icon_state = "swall_f5"; - dir = 2 +/obj/item/crowbar, +/obj/item/wrench, +/obj/structure/table, +/obj/machinery/atmospherics/unary/vent_pump{ + dir = 1; + on = 1 }, -/area/shuttle/pod_1) +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "cautioncorner" + }, +/area/hallway/primary/starboard) "bkk" = ( /obj/effect/spawner/window/reinforced, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -36044,16 +36217,26 @@ /turf/simulated/floor/plasteel, /area/engine/engineering) "bkU" = ( -/obj/effect/spawner/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/navbeacon{ + codes_txt = "patrol;next_patrol=13.3-Engineering-Central"; + location = "13.2-Tcommstore" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/cable/yellow, -/turf/simulated/floor/plating, -/area/security/checkpoint/engineering) +/turf/simulated/floor/plasteel{ + dir = 2; + icon_state = "neutralcorner" + }, +/area/hallway/primary/starboard) "bkV" = ( -/obj/effect/spawner/window/reinforced, -/obj/structure/cable/yellow, -/turf/simulated/floor/plating, -/area/security/checkpoint/engineering) +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 1; + on = 1; + scrub_N2O = 0; + scrub_Toxins = 0 + }, +/turf/simulated/floor/engine, +/area/engine/mechanic_workshop) "bkW" = ( /turf/simulated/wall/r_wall, /area/bridge) @@ -36157,15 +36340,14 @@ }, /area/hallway/primary/central) "blh" = ( -/obj/structure/sign/directions/security{ - dir = 4; - pixel_y = 8 +/obj/structure/closet/wardrobe/pjs, +/turf/simulated/floor/plasteel{ + icon_state = "neutral"; + dir = 1 }, -/obj/structure/sign/directions/engineering{ - dir = 4 - }, -/turf/simulated/wall, -/area/janitor) +/area/hallway/secondary/construction{ + name = "\improper Garden" + }) "bli" = ( /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, @@ -36184,14 +36366,11 @@ /turf/simulated/floor/plasteel, /area/engine/mechanic_workshop) "blk" = ( -/obj/effect/spawner/window/reinforced, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 + dir = 10 }, -/turf/simulated/floor/plating, -/area/security/checkpoint2{ - name = "Customs" - }) +/turf/simulated/floor/plasteel, +/area/engine/break_room) "bll" = ( /obj/structure/closet/emcloset, /obj/structure/sign/double/map/left{ @@ -36258,12 +36437,17 @@ /turf/simulated/floor/plating, /area/maintenance/incinerator) "bls" = ( -/obj/effect/spawner/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 +/obj/structure/shuttle/engine/propulsion{ + dir = 8; + icon_state = "propulsion"; + tag = "icon-propulsion (EAST)" }, -/turf/simulated/floor/plating, -/area/engine/break_room) +/turf/space, +/turf/simulated/shuttle/wall{ + icon_state = "swall_f6"; + dir = 2 + }, +/area/shuttle/transport) "blt" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, @@ -36293,19 +36477,17 @@ name = "\improper Cargo Office" }) "blw" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - name = "Engineering Security Post"; - req_access_txt = "63" +/obj/structure/shuttle/engine/propulsion{ + dir = 8; + icon_state = "propulsion"; + tag = "icon-propulsion (EAST)" }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" +/turf/space, +/turf/simulated/shuttle/wall{ + icon_state = "swall_f5"; + dir = 2 }, -/turf/simulated/floor/plasteel, -/area/security/checkpoint/engineering) +/area/shuttle/transport) "blx" = ( /obj/effect/spawner/window/reinforced, /obj/structure/disposalpipe/segment, @@ -36314,14 +36496,15 @@ name = "\improper Cargo Office" }) "bly" = ( -/obj/structure/shuttle/engine/propulsion/burst, -/turf/simulated/floor/plating, -/turf/simulated/shuttle/wall{ - tag = "icon-swall_f9"; - icon_state = "swall_f9"; - dir = 2 +/obj/machinery/atmospherics/unary/vent_pump{ + dir = 2; + on = 1 }, -/area/shuttle/pod_1) +/turf/simulated/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/engine/break_room) "blz" = ( /turf/space, /turf/simulated/shuttle/wall{ @@ -37058,19 +37241,10 @@ name = "Central Maintenance" }) "bmG" = ( -/obj/machinery/computer/secure_data, -/obj/machinery/computer/security/telescreen{ - desc = "Used for monitoring the singularity engine safely."; - dir = 8; - name = "Singularity Monitor"; - network = list("Singulo"); - pixel_x = 32 - }, /turf/simulated/floor/plasteel{ - icon_state = "red"; - dir = 4 + icon_state = "dark" }, -/area/security/checkpoint/engineering) +/area/maintenance/starboard) "bmH" = ( /obj/structure/window/reinforced{ dir = 8 @@ -37644,10 +37818,12 @@ name = "\improper Captain's Quarters" }) "bnB" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "yellow" @@ -37663,6 +37839,10 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + level = 1 + }, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "yellow" @@ -37757,21 +37937,13 @@ name = "\improper MiniSat Exterior" }) "bnL" = ( -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_y = -29 - }, -/obj/structure/rack{ - dir = 8; - layer = 2.9 - }, -/obj/item/clothing/shoes/magboots/advance, -/obj/item/clothing/suit/space/hardsuit/engine/elite, -/obj/item/clothing/mask/breath, +/obj/structure/table, +/obj/item/toy/figure/clown, +/obj/item/reagent_containers/food/snacks/baguette, /turf/simulated/floor/plasteel{ - icon_state = "vault"; - dir = 5 + icon_state = "dark" }, -/area/engine/chiefs_office) +/area/maintenance/starboard) "bnM" = ( /obj/machinery/disposal, /obj/structure/disposalpipe/trunk{ @@ -37836,6 +38008,18 @@ }, /turf/simulated/floor/bluegrid, /area/turret_protected/ai) +"bnR" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/maintenance/starboard) +"bnS" = ( +/obj/item/storage/backpack/duffel/clown, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/maintenance/starboard) "bnT" = ( /obj/machinery/light/small{ dir = 1 @@ -37847,6 +38031,14 @@ /area/construction/hallway{ name = "\improper MiniSat Exterior" }) +"bnU" = ( +/obj/structure/bed, +/obj/item/bedsheet/clown, +/obj/effect/decal/cleanable/blood/old, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/maintenance/starboard) "bnV" = ( /obj/effect/landmark{ name = "Observer-Start" @@ -39653,9 +39845,9 @@ }, /area/hallway/primary/starboard) "bqN" = ( -/obj/effect/spawner/window/reinforced, -/turf/simulated/floor/plating, -/area/engine/break_room) +/obj/structure/sign/clown, +/turf/simulated/wall/r_wall, +/area/maintenance/starboard) "bqO" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -39839,6 +40031,12 @@ /area/construction/hallway{ name = "\improper MiniSat Exterior" }) +"brg" = ( +/obj/structure/barricade/wooden, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/maintenance/starboard) "brh" = ( /obj/structure/window/reinforced{ dir = 4 @@ -40241,20 +40439,11 @@ }, /area/turret_protected/ai) "brR" = ( -/obj/item/radio/intercom{ - frequency = 1459; - name = "Station Intercom (General)"; - pixel_y = 21 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/drone_fabricator, +/obj/effect/decal/remains/human, /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "yellow" + icon_state = "dark" }, -/area/engine/break_room) +/area/maintenance/starboard) "brS" = ( /obj/structure/reagent_dispensers/watertank, /turf/simulated/floor/plating, @@ -42361,15 +42550,21 @@ /turf/simulated/floor/plating, /area/maintenance/starboard) "bvk" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 +/obj/structure/transit_tube{ + tag = "icon-S-NE"; + icon_state = "S-NE" }, -/obj/structure/cable{ - icon_state = "0-4"; - d2 = 4 +/obj/structure/window/reinforced{ + dir = 4 }, -/turf/simulated/floor/plasteel, -/area/engine/break_room) +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/turf/simulated/floor/plasteel{ + icon_state = "vault"; + dir = 8 + }, +/area/space/nearstation) "bvl" = ( /obj/effect/spawner/window/reinforced, /obj/machinery/door/poddoor/shutters{ @@ -43153,20 +43348,18 @@ name = "Port Maintenance" }) "bwr" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/hatch{ - name = "MiniSat Transit Tube"; - req_one_access_txt = "32;19" +/obj/structure/transit_tube{ + tag = "icon-D-NW"; + icon_state = "D-NW" }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" +/obj/structure/window/reinforced{ + dir = 8 }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, -/area/engine/break_room) +/turf/simulated/floor/plating/airless, +/area/space/nearstation) "bws" = ( /obj/structure/cable/yellow{ d1 = 2; @@ -43197,21 +43390,11 @@ name = "\improper Captain's Quarters" }) "bwv" = ( -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; - id_tag = "transittube"; - name = "Transit Tube Blast Door"; - opacity = 0 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/effect/decal/warning_stripes/yellow, -/turf/simulated/floor/plasteel, -/area/engine/break_room) +/turf/simulated/floor/plating/airless, +/area/space/nearstation) "bww" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -43235,15 +43418,19 @@ }, /area/hallway/primary/central) "bwy" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" +/obj/structure/transit_tube{ + tag = "icon-D-SE"; + icon_state = "D-SE" }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +/obj/structure/transit_tube{ + tag = "icon-D-NE"; + icon_state = "D-NE" }, -/area/engine/break_room) +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plating/airless, +/area/space/nearstation) "bwz" = ( /obj/machinery/atmospherics/unary/vent_pump{ dir = 1; @@ -43299,20 +43486,15 @@ /turf/simulated/floor/wood, /area/crew_quarters/bar) "bwF" = ( -/obj/machinery/atmospherics/unary/vent_pump{ - dir = 2; - on = 1 +/obj/structure/transit_tube{ + tag = "icon-E-SW-NW"; + icon_state = "E-SW-NW" }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 }, -/turf/simulated/floor/plasteel{ - icon_state = "vault"; - dir = 8 - }, -/area/engine/break_room) +/turf/simulated/floor/plating/airless, +/area/space/nearstation) "bwG" = ( /obj/machinery/door/airlock/maintenance{ name = "Bar Maintenance"; @@ -43361,43 +43543,21 @@ /turf/simulated/floor/plating, /area/maintenance/starboard) "bwL" = ( -/obj/structure/transit_tube{ - tag = "icon-D-NW"; - icon_state = "D-NW" - }, -/obj/structure/window/reinforced{ - dir = 8 - }, +/obj/structure/transit_tube, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, /turf/simulated/floor/plating/airless, /area/space/nearstation) "bwM" = ( /obj/structure/transit_tube{ - tag = "icon-S-NE"; - icon_state = "S-NE" - }, -/obj/structure/window/reinforced{ - dir = 4 + tag = "icon-E-W-Pass"; + icon_state = "E-W-Pass" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 6 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel{ - icon_state = "vault"; - dir = 8 + dir = 4 }, +/turf/simulated/floor/plating/airless, /area/space/nearstation) "bwN" = ( /obj/item/assembly/prox_sensor, @@ -43499,11 +43659,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, +/obj/structure/transit_tube, /turf/simulated/floor/plating/airless, /area/space/nearstation) "bwV" = ( @@ -43516,49 +43672,38 @@ /area/engine/break_room) "bwW" = ( /obj/structure/transit_tube{ - tag = "icon-E-SW-NW"; - icon_state = "E-SW-NW" + icon_state = "W-NE-SE" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 + dir = 4; + level = 1 }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/plating/airless, +/obj/structure/lattice/catwalk, +/turf/space, /area/space/nearstation) "bwX" = ( /obj/structure/transit_tube{ - tag = "icon-D-SE"; - icon_state = "D-SE" + tag = "icon-D-SW"; + icon_state = "D-SW" }, /obj/structure/transit_tube{ - tag = "icon-D-NE"; - icon_state = "D-NE" + icon_state = "D-NW"; + tag = "icon-D-NE" }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 + dir = 4; + level = 1 }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/plating/airless, +/obj/structure/lattice/catwalk, +/turf/space, /area/space/nearstation) "bwY" = ( -/obj/structure/transit_tube, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 + dir = 4; + level = 1 }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/plating/airless, +/obj/structure/lattice/catwalk, +/turf/space, /area/space/nearstation) "bwZ" = ( /obj/structure/cable/yellow{ @@ -43573,38 +43718,37 @@ /turf/simulated/floor/plating, /area/maintenance/starboard) "bxa" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ +/obj/structure/window/reinforced{ dir = 4 }, -/obj/machinery/power/apc{ - dir = 2; - name = "Engineering Foyer APC"; - pixel_x = -1; - pixel_y = -26 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4; + level = 1 }, -/obj/structure/cable/yellow{ - d2 = 4; - icon_state = "0-4" - }, -/obj/machinery/light, -/turf/simulated/floor/plasteel, -/area/engine/break_room) +/obj/structure/lattice/catwalk, +/turf/space, +/area/space/nearstation) "bxb" = ( +/obj/structure/transit_tube_pod, +/obj/structure/window/reinforced{ + dir = 8 + }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4; + level = 1 + }, +/obj/structure/transit_tube/station{ + tag = "icon-closed (EAST)"; + icon_state = "closed"; dir = 4 }, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" +/turf/simulated/floor/plasteel{ + icon_state = "vault"; + dir = 5 }, -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -24 - }, -/obj/machinery/computer/drone_control, -/turf/simulated/floor/plasteel, -/area/engine/break_room) +/area/construction/hallway{ + name = "\improper MiniSat Exterior" + }) "bxc" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -43672,20 +43816,15 @@ }, /area/engine/break_room) "bxi" = ( -/obj/structure/transit_tube{ - tag = "icon-E-W-Pass"; - icon_state = "E-W-Pass" - }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 + dir = 10 }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, -/turf/simulated/floor/plating/airless, -/area/space/nearstation) +/area/construction/hallway{ + name = "\improper MiniSat Exterior" + }) "bxj" = ( /obj/structure/transit_tube{ tag = "icon-S-NE"; @@ -43702,109 +43841,93 @@ /turf/space, /area/space/nearstation) "bxl" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 +/obj/machinery/atmospherics/unary/vent_pump{ + on = 1 }, -/obj/structure/transit_tube, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/plating/airless, -/area/space/nearstation) -"bxm" = ( -/obj/structure/transit_tube{ - icon_state = "W-NE-SE" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4; - level = 1 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/lattice/catwalk, -/turf/space, -/area/space/nearstation) -"bxn" = ( -/obj/structure/transit_tube{ - tag = "icon-D-SW"; - icon_state = "D-SW" - }, -/obj/structure/transit_tube{ - icon_state = "D-NW"; - tag = "icon-D-NE" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4; - level = 1 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/lattice/catwalk, -/turf/space, -/area/space/nearstation) -"bxo" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4; - level = 1 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/lattice/catwalk, -/turf/space, -/area/space/nearstation) -"bxp" = ( -/obj/structure/transit_tube_pod, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4; - level = 1 - }, -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/transit_tube/station{ - tag = "icon-closed (EAST)"; - icon_state = "closed"; - dir = 4 +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" }, /turf/simulated/floor/plasteel{ - icon_state = "vault"; - dir = 5 + icon_state = "dark" }, /area/construction/hallway{ name = "\improper MiniSat Exterior" }) -"bxq" = ( -/obj/structure/window/reinforced{ +"bxm" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4; - level = 1 +/obj/machinery/power/apc{ + dir = 2; + name = "Engineering Foyer APC"; + pixel_x = -1; + pixel_y = -26 }, -/obj/structure/cable{ +/obj/machinery/light, +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, +/turf/simulated/floor/plasteel, +/area/engine/break_room) +"bxn" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/obj/structure/cable/yellow{ d1 = 4; d2 = 8; icon_state = "4-8" }, -/obj/structure/lattice/catwalk, -/turf/space, -/area/space/nearstation) +/turf/simulated/floor/plasteel, +/area/engine/break_room) +"bxo" = ( +/obj/machinery/door/airlock/command{ + name = "Blueshield's Office"; + req_access_txt = "67" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/wood, +/area/blueshield) +"bxp" = ( +/obj/machinery/door/airlock/command{ + name = "NT Representative's Office"; + req_access_txt = "73" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/wood, +/area/ntrep) +"bxq" = ( +/obj/machinery/door/firedoor, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/command{ + name = "E.V.A. Storage"; + req_access_txt = "18" + }, +/obj/effect/decal/warning_stripes/yellow, +/turf/simulated/floor/plasteel, +/area/ai_monitored/storage/eva{ + name = "E.V.A. Storage" + }) "bxr" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ req_access_txt = 1 @@ -43819,37 +43942,24 @@ name = "Arrivals" }) "bxs" = ( -/obj/machinery/atmospherics/unary/vent_pump{ - on = 1 - }, -/obj/structure/cable/yellow{ - d2 = 4; - icon_state = "0-4" - }, -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; - icon_state = "2-4" - }, +/obj/item/gun/throw/crossbow/french, +/obj/effect/decal/cleanable/cobweb, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" - }) +/area/maintenance/starboard) "bxt" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 - }, -/obj/structure/cable{ +/obj/structure/girder, +/obj/structure/grille, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/structure/cable/yellow{ + d1 = 4; d2 = 8; - icon_state = "0-8" + icon_state = "4-8" }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/construction/hallway{ - name = "\improper MiniSat Exterior" +/turf/simulated/floor/plating, +/area/maintenance/aft{ + name = "Aft Maintenance" }) "bxu" = ( /obj/machinery/atmospherics/unary/vent_scrubber{ @@ -48684,6 +48794,19 @@ /area/construction/hallway{ name = "\improper MiniSat Exterior" }) +"bFh" = ( +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 4; + on = 1; + scrub_N2O = 1; + scrub_Toxins = 1 + }, +/obj/structure/closet/emcloset, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "caution" + }, +/area/hallway/primary/starboard) "bFi" = ( /obj/machinery/atmospherics/unary/vent_pump{ dir = 4; @@ -48718,6 +48841,13 @@ /obj/structure/lattice, /turf/space, /area/space/nearstation) +"bFl" = ( +/obj/structure/bed, +/obj/item/bedsheet/mime, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/maintenance/starboard) "bFm" = ( /obj/machinery/atmospherics/unary/vent_scrubber{ dir = 8; @@ -49630,6 +49760,32 @@ dir = 5 }, /area/atmos) +"bGQ" = ( +/obj/machinery/camera{ + c_tag = "Toxins - Launch Area"; + dir = 2; + network = list("SS13","RD") + }, +/obj/effect/decal/warning_stripes/yellow/hollow, +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-16"; + layer = 4.1; + tag = "icon-plant-16" + }, +/turf/simulated/floor/plasteel, +/area/toxins/mixing{ + name = "\improper Toxins Lab" + }) +"bGR" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/closet/firecloset, +/turf/simulated/floor/plasteel{ + icon_state = "caution"; + dir = 4 + }, +/area/hallway/primary/starboard) "bGS" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/window/reinforced{ @@ -49659,6 +49815,15 @@ /area/tcommsat/computer{ name = "\improper Telecoms Control Room" }) +"bGU" = ( +/obj/machinery/shieldwallgen{ + req_access = list(55) + }, +/obj/structure/cable/yellow, +/turf/simulated/floor/engine, +/area/toxins/xenobiology{ + name = "\improper Secure Lab" + }) "bGV" = ( /obj/machinery/power/apc{ cell_type = 10000; @@ -49677,17 +49842,22 @@ /turf/simulated/floor/plasteel, /area/atmos) "bGW" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 8; - icon_state = "propulsion"; - tag = "icon-propulsion (EAST)" +/obj/effect/spawner/window/reinforced, +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" }, -/turf/space, -/turf/simulated/shuttle/wall{ - icon_state = "swall_f6"; - dir = 2 +/obj/machinery/door/poddoor{ + density = 0; + icon_state = "open"; + id_tag = "Xenolab"; + name = "test chamber blast door"; + opacity = 0 }, -/area/shuttle/transport) +/turf/simulated/floor/engine, +/area/toxins/xenobiology{ + name = "\improper Secure Lab" + }) "bGX" = ( /turf/simulated/shuttle/wall{ icon_state = "swall12"; @@ -49831,6 +50001,29 @@ /area/crew_quarters/toilet{ name = "\improper Auxiliary Restrooms" }) +"bHo" = ( +/obj/effect/spawner/window/reinforced, +/obj/structure/cable/yellow, +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, +/obj/machinery/atmospherics/pipe/simple/visible, +/obj/machinery/door/poddoor{ + density = 0; + icon_state = "open"; + id_tag = "Xenolab"; + name = "test chamber blast door"; + opacity = 0 + }, +/turf/simulated/floor/engine, +/area/toxins/xenobiology{ + name = "\improper Secure Lab" + }) "bHp" = ( /obj/structure/rack, /obj/item/flashlight, @@ -50128,13 +50321,16 @@ /turf/simulated/floor/carpet, /area/crew_quarters/theatre) "bHV" = ( -/obj/structure/chair/wood/wings, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/landmark/start{ - name = "Mime" +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 5; + level = 1 }, -/turf/simulated/floor/carpet, -/area/crew_quarters/theatre) +/obj/machinery/vending/medical, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "whiteblue" + }, +/area/medical/reception) "bHW" = ( /turf/simulated/floor/carpet, /area/crew_quarters/theatre) @@ -52465,16 +52661,8 @@ /turf/simulated/floor/carpet, /area/crew_quarters/theatre) "bLI" = ( -/obj/structure/chair/wood/wings{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, +/obj/structure/chair/wood/wings, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/effect/landmark/start{ - name = "Clown" - }, /turf/simulated/floor/carpet, /area/crew_quarters/theatre) "bLJ" = ( @@ -52826,6 +53014,67 @@ /obj/structure/window/reinforced, /turf/space, /area/space/nearstation) +"bMo" = ( +/obj/machinery/door/window/southleft{ + dir = 2; + name = "Maximum Security Test Chamber"; + req_access_txt = "55" + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/door/poddoor{ + density = 0; + icon_state = "open"; + id_tag = "Xenolab"; + name = "test chamber blast door"; + opacity = 0 + }, +/turf/simulated/floor/engine, +/area/toxins/xenobiology{ + name = "\improper Secure Lab" + }) +"bMp" = ( +/obj/effect/spawner/window/reinforced, +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/obj/structure/cable/yellow{ + d2 = 4; + icon_state = "0-4" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/door/poddoor{ + density = 0; + icon_state = "open"; + id_tag = "Xenolab"; + name = "test chamber blast door"; + opacity = 0 + }, +/turf/simulated/floor/engine, +/area/toxins/xenobiology{ + name = "\improper Secure Lab" + }) +"bMq" = ( +/obj/effect/spawner/window/reinforced, +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/door/poddoor{ + density = 0; + icon_state = "open"; + id_tag = "Xenolab"; + name = "test chamber blast door"; + opacity = 0 + }, +/turf/simulated/floor/engine, +/area/toxins/xenobiology{ + name = "\improper Secure Lab" + }) "bMr" = ( /obj/structure/window/reinforced, /obj/structure/window/reinforced{ @@ -52837,6 +53086,12 @@ /area/construction/hallway{ name = "\improper MiniSat Exterior" }) +"bMs" = ( +/obj/machinery/atmospherics/pipe/simple/visible, +/turf/simulated/floor/engine, +/area/toxins/xenobiology{ + name = "\improper Secure Lab" + }) "bMt" = ( /obj/structure/window/reinforced{ dir = 8 @@ -52858,18 +53113,19 @@ /area/construction/hallway{ name = "\improper MiniSat Exterior" }) +"bMu" = ( +/turf/simulated/floor/engine, +/area/toxins/xenobiology{ + name = "\improper Secure Lab" + }) "bMv" = ( -/obj/structure/shuttle/engine/propulsion{ - dir = 8; - icon_state = "propulsion"; - tag = "icon-propulsion (EAST)" - }, -/turf/space, -/turf/simulated/shuttle/wall{ - icon_state = "swall_f5"; +/obj/structure/disposaloutlet{ dir = 2 }, -/area/shuttle/transport) +/turf/simulated/floor/engine, +/area/toxins/xenobiology{ + name = "\improper Secure Lab" + }) "bMw" = ( /turf/simulated/shuttle/floor, /turf/simulated/shuttle/wall/interior{ @@ -53174,14 +53430,10 @@ /turf/simulated/floor/plating, /area/atmos) "bNb" = ( -/obj/structure/cable{ +/obj/structure/cable/yellow{ d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/door/airlock/command{ - name = "Blueshield's Office"; - req_access_txt = "67" + d2 = 4; + icon_state = "1-4" }, /turf/simulated/floor/wood, /area/blueshield) @@ -53205,17 +53457,13 @@ /turf/simulated/floor/plating, /area/atmos) "bNf" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/door/airlock/command{ - name = "NT Representative's Office"; - req_access_txt = "73" +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" }, /turf/simulated/floor/wood, -/area/ntrep) +/area/blueshield) "bNg" = ( /obj/effect/spawner/window/reinforced, /obj/machinery/atmospherics/pipe/simple/visible/green, @@ -53531,31 +53779,24 @@ /turf/simulated/floor/plating, /area/maintenance/starboard) "bNG" = ( -/obj/item/crowbar, -/obj/item/wrench, /obj/structure/table, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "cautioncorner" +/obj/item/stack/sheet/metal{ + amount = 10 }, -/area/hallway/primary/starboard) +/obj/item/radio/electropack, +/turf/simulated/floor/engine, +/area/toxins/xenobiology{ + name = "\improper Secure Lab" + }) "bNH" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" +/obj/machinery/sparker{ + id = "Xenobio"; + pixel_x = -25 }, -/obj/machinery/navbeacon{ - codes_txt = "patrol;next_patrol=13.3-Engineering-Central"; - location = "13.2-Tcommstore" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/plasteel{ - dir = 2; - icon_state = "neutralcorner" - }, -/area/hallway/primary/starboard) +/turf/simulated/floor/engine, +/area/toxins/xenobiology{ + name = "\improper Secure Lab" + }) "bNI" = ( /obj/machinery/light/small{ dir = 4 @@ -53638,27 +53879,13 @@ name = "E.V.A. Storage" }) "bNN" = ( -/obj/machinery/door/firedoor, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" +/obj/machinery/computer/card/minor/rd, +/turf/simulated/floor/plasteel{ + tag = "icon-cafeteria (NORTHEAST)"; + icon_state = "cafeteria"; + dir = 5 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, -/obj/machinery/door/airlock/command{ - name = "E.V.A. Storage"; - req_access_txt = "18" - }, -/obj/effect/decal/warning_stripes/yellow, -/turf/simulated/floor/plasteel, -/area/ai_monitored/storage/eva{ - name = "E.V.A. Storage" - }) +/area/crew_quarters/hor) "bNO" = ( /obj/machinery/atmospherics/pipe/simple/visible/universal{ dir = 4 @@ -53753,6 +53980,14 @@ }, /turf/space, /area/space/nearstation) +"bNZ" = ( +/obj/machinery/atmospherics/unary/outlet_injector/on{ + dir = 1 + }, +/turf/simulated/floor/engine, +/area/toxins/xenobiology{ + name = "\improper Secure Lab" + }) "bOa" = ( /turf/simulated/floor/plasteel/dark, /area/tcommsat/server) @@ -53762,6 +53997,12 @@ }, /turf/simulated/floor/plasteel/dark, /area/tcommsat/server) +"bOc" = ( +/obj/item/radio/beacon, +/turf/simulated/floor/engine, +/area/toxins/xenobiology{ + name = "\improper Secure Lab" + }) "bOd" = ( /turf/space, /turf/simulated/shuttle/wall{ @@ -54087,10 +54328,23 @@ /turf/simulated/floor/wood, /area/blueshield) "bOI" = ( -/obj/structure/cable{ - d1 = 1; - d2 = 4; - icon_state = "1-4" +/obj/machinery/light{ + dir = 1 + }, +/obj/machinery/power/apc{ + dir = 4; + name = "Blueshield Office APC"; + pixel_x = 24; + pixel_y = -3 + }, +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_y = 32 + }, +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" }, /turf/simulated/floor/wood, /area/blueshield) @@ -54156,7 +54410,7 @@ /turf/simulated/floor/wood, /area/ntrep) "bON" = ( -/obj/structure/cable{ +/obj/structure/cable/yellow{ d1 = 1; d2 = 4; icon_state = "1-4" @@ -54396,36 +54650,39 @@ name = "E.V.A. Storage" }) "bPj" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "yellow" +/obj/structure/table, +/obj/machinery/cell_charger{ + pixel_y = 5 }, -/area/hallway/primary/starboard) +/obj/item/stack/cable_coil, +/obj/item/multitool, +/obj/item/stock_parts/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/turf/simulated/floor/engine, +/area/toxins/xenobiology{ + name = "\improper Secure Lab" + }) "bPk" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 8; - initialize_directions = 11 - }, -/turf/simulated/floor/plasteel{ - dir = 2; - icon_state = "yellow" - }, -/area/hallway/primary/starboard) +/obj/effect/decal/remains/xeno, +/turf/simulated/floor/engine, +/area/toxins/xenobiology{ + name = "\improper Secure Lab" + }) "bPl" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 +/obj/machinery/light{ + dir = 2 }, -/turf/simulated/floor/plasteel{ - dir = 6; - icon_state = "yellow" +/obj/machinery/camera{ + c_tag = "Secure Lab - Test Chamber"; + dir = 1; + network = list("SS13","RD") }, -/area/hallway/primary/starboard) +/turf/simulated/floor/engine, +/area/toxins/xenobiology{ + name = "\improper Secure Lab" + }) "bPm" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -54496,13 +54753,13 @@ /turf/simulated/wall/r_wall, /area/atmos) "bPs" = ( -/obj/structure/cable{ +/obj/structure/cable/yellow{ d1 = 4; d2 = 8; icon_state = "4-8" }, /turf/simulated/floor/wood, -/area/blueshield) +/area/ntrep) "bPt" = ( /obj/machinery/atmospherics/binary/volume_pump/on{ dir = 8; @@ -54568,26 +54825,26 @@ /turf/simulated/floor/plasteel, /area/atmos) "bPB" = ( -/obj/machinery/light{ - dir = 1 - }, /obj/machinery/power/apc{ dir = 4; - name = "Blueshield Office APC"; + name = "Centcomm Rep APC"; pixel_x = 24; pixel_y = -3 }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" +/obj/machinery/light{ + dir = 1 }, /obj/machinery/status_display{ density = 0; layer = 4; pixel_y = 32 }, +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, /turf/simulated/floor/wood, -/area/blueshield) +/area/ntrep) "bPC" = ( /obj/machinery/atmospherics/pipe/simple/visible/cyan, /obj/machinery/atmospherics/pipe/simple/visible/yellow{ @@ -54634,6 +54891,14 @@ /obj/structure/lattice, /turf/space, /area/space/nearstation) +"bPI" = ( +/obj/item/radio/intercom{ + pixel_y = -25 + }, +/turf/simulated/floor/engine, +/area/toxins/xenobiology{ + name = "\improper Secure Lab" + }) "bPJ" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -54647,6 +54912,28 @@ /area/tcommsat/computer{ name = "\improper Telecoms Control Room" }) +"bPK" = ( +/obj/structure/table, +/obj/item/assembly/igniter{ + pixel_x = -5; + pixel_y = 3 + }, +/obj/item/assembly/igniter{ + pixel_x = 5; + pixel_y = -4 + }, +/obj/item/assembly/igniter{ + pixel_x = 2; + pixel_y = 6 + }, +/obj/item/assembly/igniter{ + pixel_x = 2; + pixel_y = -1 + }, +/turf/simulated/floor/engine, +/area/toxins/xenobiology{ + name = "\improper Secure Lab" + }) "bPL" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -54728,13 +55015,22 @@ /turf/simulated/floor/wood, /area/security/vacantoffice) "bPS" = ( -/obj/structure/cable{ - d1 = 4; - d2 = 8; - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/effect/decal/warning_stripes/southeast, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 4; + icon_state = "1-4" }, -/turf/simulated/floor/wood, -/area/ntrep) +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/plasteel, +/area/teleporter{ + name = "\improper Teleporter Room" + }) "bPT" = ( /obj/item/folder/blue, /obj/structure/table/wood, @@ -54799,26 +55095,12 @@ /turf/simulated/floor/wood, /area/library) "bQa" = ( -/obj/machinery/power/apc{ - dir = 4; - name = "Centcomm Rep APC"; - pixel_x = 24; - pixel_y = -3 - }, -/obj/structure/cable{ - d2 = 8; - icon_state = "0-8" - }, -/obj/machinery/light{ +/obj/structure/window/reinforced{ dir = 1 }, -/obj/machinery/status_display{ - density = 0; - layer = 4; - pixel_y = 32 - }, -/turf/simulated/floor/wood, -/area/ntrep) +/obj/structure/closet/secure_closet/medical2, +/turf/simulated/floor/plasteel, +/area/assembly/robotics) "bQb" = ( /obj/structure/closet/firecloset, /turf/simulated/floor/plasteel{ @@ -55014,13 +55296,6 @@ }, /turf/simulated/floor/wood, /area/ntrep) -"bQv" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/spawner/window/reinforced, -/turf/simulated/floor/plating, -/area/medical/research{ - name = "Research Division" - }) "bQw" = ( /obj/machinery/portable_atmospherics/canister/nitrogen, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ @@ -55288,16 +55563,48 @@ /turf/simulated/floor/wood, /area/crew_quarters/theatre) "bQV" = ( -/turf/simulated/wall/r_wall, -/area/maintenance/atmos_control{ - name = "Telecoms Storage" - }) +/obj/structure/extinguisher_cabinet{ + pixel_x = 6; + pixel_y = -30 + }, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_x = -30 + }, +/obj/machinery/computer/card/minor/cmo, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) "bQW" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/wall/r_wall, -/area/maintenance/atmos_control{ - name = "Telecoms Storage" - }) +/obj/item/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/obj/item/pen{ + pixel_x = -3; + pixel_y = 5 + }, +/obj/structure/table/reinforced, +/obj/item/cartridge/signal/toxins{ + pixel_x = 4; + pixel_y = 6 + }, +/obj/item/cartridge/signal/toxins{ + pixel_x = 4; + pixel_y = 6 + }, +/obj/item/paper/monitorkey, +/obj/item/stamp/rd{ + pixel_x = 3; + pixel_y = -2 + }, +/turf/simulated/floor/plasteel{ + tag = "icon-cafeteria (NORTHEAST)"; + icon_state = "cafeteria"; + dir = 5 + }, +/area/crew_quarters/hor) "bQX" = ( /obj/structure/closet/crate{ icon_state = "crateopen"; @@ -55416,6 +55723,17 @@ /obj/structure/lattice, /turf/simulated/wall/r_wall, /area/space/nearstation) +"bRn" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/airlock/medical{ + name = "Coroner" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/genetics_cloning) "bRo" = ( /obj/machinery/light/small, /obj/item/folder, @@ -55454,6 +55772,17 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel/dark, /area/tcommsat/server) +"bRr" = ( +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 4; + on = 1; + scrub_N2O = 0; + scrub_Toxins = 0 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) "bRs" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -55463,6 +55792,20 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel/dark, /area/tcommsat/server) +"bRt" = ( +/obj/machinery/requests_console{ + department = "Morgue"; + departmentType = 5; + name = "Morgue Requests Console"; + pixel_y = 30 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) "bRu" = ( /obj/machinery/atmospherics/unary/vent_pump{ dir = 1; @@ -56150,36 +56493,33 @@ /turf/simulated/floor/plating, /area/maintenance/starboard) "bSD" = ( -/obj/machinery/atmospherics/unary/vent_pump{ - dir = 1; - on = 1 +/obj/machinery/door/poddoor{ + density = 0; + icon_state = "open"; + id_tag = "Biohazard_medi"; + name = "Quarantine Lockdown"; + opacity = 0 }, -/obj/machinery/camera{ - c_tag = "Gravity Generation Access"; - dir = 4; - network = list("Engineering","SS13"); - pixel_y = -22 +/obj/machinery/door/airlock/maintenance{ + name = "Surgery Maintenance"; + req_access_txt = "45" }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/maintenance/atmos_control{ - name = "Telecoms Storage" - }) +/turf/simulated/floor/plating, +/area/medical/medbay3) "bSE" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/hologram/holopad, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" +/obj/machinery/camera{ + c_tag = "Morgue"; + dir = 2; + network = list("SS13","Medbay") }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/machinery/bodyscanner, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/maintenance/atmos_control{ - name = "Telecoms Storage" - }) +/area/medical/morgue) "bSF" = ( /obj/machinery/door/window/northleft{ dir = 8; @@ -56379,6 +56719,115 @@ icon_state = "neutralcorner" }, /area/hallway/primary/central) +"bSX" = ( +/obj/machinery/firealarm{ + dir = 2; + pixel_y = 24 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"bSY" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4; + level = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock/medical{ + name = "Morgue" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"bSZ" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/machinery/door/airlock/medical{ + name = "Morgue" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"bTa" = ( +/obj/structure/table, +/obj/item/storage/box/gloves{ + pixel_y = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"bTb" = ( +/obj/machinery/alarm{ + pixel_y = 32 + }, +/obj/structure/morgue, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"bTc" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/spawner/lootdrop{ + loot = list(/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); + name = "maint grille or trash spawner" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 2 + }, +/obj/effect/decal/warning_stripes/north, +/turf/simulated/floor/plating, +/area/maintenance/aft{ + name = "Aft Maintenance" + }) +"bTd" = ( +/obj/structure/chair/wood/wings{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/carpet, +/area/crew_quarters/theatre) +"bTe" = ( +/obj/machinery/power/apc{ + dir = 8; + name = "west bump"; + pixel_x = -24; + shock_proof = 0 + }, +/obj/structure/cable/yellow{ + d1 = 0; + d2 = 2; + icon_state = "0-2" + }, +/turf/simulated/floor/plasteel{ + dir = 9; + icon_state = "whiteblue" + }, +/area/medical/paramedic) "bTf" = ( /obj/structure/table/reinforced, /obj/item/flashlight, @@ -56719,24 +57168,16 @@ name = "Arrivals" }) "bTK" = ( -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/door/airlock/engineering{ - name = "Telecoms Storage"; - req_access_txt = "61" +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/alarm{ + dir = 1; + pixel_y = -22 }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/effect/decal/warning_stripes/yellow, /turf/simulated/floor/plasteel{ - icon_state = "dark" + dir = 2; + icon_state = "neutralcorner" }, -/area/maintenance/atmos_control{ - name = "Telecoms Storage" - }) +/area/hallway/primary/starboard) "bTL" = ( /obj/machinery/alarm{ dir = 8; @@ -56928,15 +57369,11 @@ }, /area/crew_quarters/kitchen) "bUg" = ( -/obj/machinery/light_switch{ - pixel_y = 26 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/maintenance/atmos_control{ - name = "Telecoms Storage" - }) +/turf/simulated/floor/wood, +/area/crew_quarters/theatre) "bUh" = ( /obj/structure/sink/kitchen{ desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; @@ -56975,11 +57412,9 @@ /turf/simulated/floor/wood, /area/crew_quarters/theatre) "bUm" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/effect/landmark/start{ - name = "Mime" +/obj/machinery/atmospherics/unary/vent_pump{ + dir = 4; + on = 1 }, /turf/simulated/floor/wood, /area/crew_quarters/theatre) @@ -57007,37 +57442,18 @@ /turf/simulated/floor/plasteel, /area/atmos) "bUp" = ( -/obj/machinery/atmospherics/unary/vent_scrubber{ - dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 8; - icon_state = "1-8" - }, +/obj/item/toy/figure/mime, /turf/simulated/floor/plasteel{ icon_state = "dark" }, -/area/maintenance/atmos_control{ - name = "Telecoms Storage" - }) +/area/maintenance/starboard) "bUq" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24 - }, +/obj/vehicle/ambulance, /turf/simulated/floor/plasteel{ - icon_state = "dark" + dir = 1; + icon_state = "whiteblue" }, -/area/maintenance/atmos_control{ - name = "Telecoms Storage" - }) +/area/medical/paramedic) "bUr" = ( /obj/machinery/atmospherics/unary/portables_connector, /turf/simulated/floor/plating, @@ -57095,6 +57511,51 @@ icon_state = "dark" }, /area/atmos) +"bUx" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10; + initialize_directions = 10; + level = 1 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bUy" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 1; + on = 1; + scrub_Toxins = 0 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bUz" = ( +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) "bUA" = ( /obj/structure/window/reinforced{ dir = 4 @@ -57296,6 +57757,12 @@ /area/hallway/secondary/entry{ name = "Arrivals" }) +"bUR" = ( +/obj/machinery/door/airlock/welded, +/turf/simulated/floor/plating, +/area/maintenance/aft{ + name = "Aft Maintenance" + }) "bUS" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -57523,6 +57990,61 @@ }, /turf/simulated/floor/plating, /area/maintenance/fore) +"bVj" = ( +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 8; + initialize_directions = 11 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bVk" = ( +/obj/machinery/power/apc{ + cell_type = 10000; + dir = 1; + name = "Research Division APC"; + pixel_y = 25 + }, +/obj/structure/cable/yellow{ + d2 = 8; + icon_state = "0-8" + }, +/obj/machinery/camera{ + c_tag = "Research Division - Airlock"; + dir = 2; + network = list("SS13","RD") + }, +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 8; + on = 1; + scrub_N2O = 0; + scrub_Toxins = 0 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/research{ + name = "Research Division" + }) +"bVl" = ( +/obj/structure/reagent_dispensers/watertank, +/turf/simulated/floor/plating, +/area/medical/research{ + name = "Research Division" + }) "bVm" = ( /obj/machinery/door/firedoor, /obj/structure/cable/yellow{ @@ -57579,23 +58101,22 @@ }, /area/crew_quarters/kitchen) "bVr" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/obj/machinery/power/apc{ - dir = 8; - name = "Telecoms Storage APC"; - pixel_x = -28 +/obj/effect/landmark{ + name = "blobstart" }, /obj/structure/cable/yellow{ - d2 = 4; - icon_state = "0-4" + d1 = 1; + d2 = 2; + icon_state = "1-2" }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" +/obj/structure/disposalpipe/segment, +/obj/item/cigbutt, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 8 }, -/area/maintenance/atmos_control{ - name = "Telecoms Storage" +/turf/simulated/floor/plating, +/area/maintenance/aft{ + name = "Aft Maintenance" }) "bVs" = ( /obj/structure/table, @@ -57695,15 +58216,18 @@ /turf/simulated/floor/wood, /area/crew_quarters/theatre) "bVC" = ( -/obj/machinery/atmospherics/unary/vent_pump{ - dir = 4; - on = 1 +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, -/obj/effect/landmark/start{ - name = "Clown" +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/plasteel{ + icon_state = "white" }, -/turf/simulated/floor/wood, -/area/crew_quarters/theatre) +/area/medical/research{ + name = "Research Division" + }) "bVD" = ( /obj/machinery/atmospherics/unary/vent_scrubber{ dir = 1; @@ -57750,22 +58274,20 @@ name = "\improper Teleporter Room" }) "bVG" = ( -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/maintenance/atmos_control{ - name = "Telecoms Storage" +/obj/structure/reagent_dispensers/fueltank, +/turf/simulated/floor/plating, +/area/medical/research{ + name = "Research Division" }) -"bVH" = ( -/obj/machinery/alarm{ +"bVI" = ( +/obj/effect/decal/cleanable/blood/old, +/obj/machinery/light{ dir = 1; - pixel_y = -22 + in_use = 1 }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/maintenance/atmos_control{ - name = "Telecoms Storage" +/turf/simulated/floor/plating, +/area/maintenance/aft{ + name = "Aft Maintenance" }) "bVJ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -57912,6 +58434,14 @@ }, /turf/simulated/floor/engine/plasma, /area/atmos) +"bVX" = ( +/obj/structure/bed, +/obj/effect/decal/cleanable/cobweb2, +/obj/item/trash/tapetrash, +/turf/simulated/floor/plating, +/area/maintenance/aft{ + name = "Aft Maintenance" + }) "bVY" = ( /obj/structure/window/reinforced{ dir = 4 @@ -57938,6 +58468,28 @@ /area/construction/hallway{ name = "\improper MiniSat Exterior" }) +"bVZ" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -2; + pixel_y = 4 + }, +/obj/item/pen{ + pixel_x = -3; + pixel_y = 5 + }, +/obj/item/clothing/suit/storage/labcoat/mad, +/obj/item/clothing/glasses/science, +/turf/simulated/floor/plating, +/area/maintenance/aft{ + name = "Aft Maintenance" + }) +"bWa" = ( +/obj/effect/decal/cleanable/blood/old, +/turf/simulated/floor/plating, +/area/maintenance/aft{ + name = "Aft Maintenance" + }) "bWb" = ( /obj/machinery/keycard_auth{ pixel_x = -24 @@ -58025,21 +58577,9 @@ name = "Port Maintenance" }) "bWl" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/effect/decal/warning_stripes/southeast, -/turf/simulated/floor/plasteel, -/area/teleporter{ - name = "\improper Teleporter Room" +/turf/simulated/wall/rust, +/area/maintenance/aft{ + name = "Aft Maintenance" }) "bWm" = ( /obj/structure/rack, @@ -58781,6 +59321,52 @@ }, /turf/simulated/floor/engine/plasma, /area/atmos) +"bXC" = ( +/obj/structure/computerframe, +/turf/simulated/floor/plating, +/area/maintenance/aft{ + name = "Aft Maintenance" + }) +"bXD" = ( +/obj/structure/chair/office/dark{ + dir = 8 + }, +/obj/effect/decal/cleanable/blood/old, +/turf/simulated/floor/plating, +/area/maintenance/aft{ + name = "Aft Maintenance" + }) +"bXE" = ( +/obj/structure/table, +/obj/item/reagent_containers/syringe, +/obj/item/storage/pill_bottle/random_drug_bottle, +/turf/simulated/floor/plating, +/area/maintenance/aft{ + name = "Aft Maintenance" + }) +"bXF" = ( +/obj/item/twohanded/required/kirbyplants{ + icon_state = "plant-14"; + layer = 4.1; + tag = "icon-plant-14" + }, +/turf/simulated/floor/plasteel{ + dir = 2; + icon_state = "whitepurple" + }, +/area/medical/research{ + name = "Research Division" + }) +"bXG" = ( +/obj/item/reagent_containers/iv_bag, +/obj/item/reagent_containers/iv_bag/salglu, +/obj/item/reagent_containers/iv_bag/blood/random, +/obj/item/reagent_containers/iv_bag/blood/random, +/obj/machinery/iv_drip, +/turf/simulated/floor/plating, +/area/maintenance/aft{ + name = "Aft Maintenance" + }) "bXH" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -59159,13 +59745,11 @@ name = "Central Maintenance" }) "bYq" = ( -/obj/structure/rack, -/obj/item/clothing/shoes/magboots, -/obj/item/clothing/mask/breath, -/obj/item/clothing/suit/space/hardsuit/engine/atmos, -/obj/effect/decal/warning_stripes/west, -/turf/simulated/floor/plasteel, -/area/atmos) +/obj/item/mounted/frame/apc_frame, +/turf/simulated/floor/plating, +/area/maintenance/aft{ + name = "Aft Maintenance" + }) "bYr" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/firealarm{ @@ -59425,6 +60009,13 @@ /obj/effect/decal/warning_stripes/yellow/hollow, /turf/simulated/floor/plasteel, /area/gateway) +"bYQ" = ( +/obj/structure/bed, +/obj/effect/decal/cleanable/blood/old, +/turf/simulated/floor/plating, +/area/maintenance/aft{ + name = "Aft Maintenance" + }) "bYR" = ( /obj/effect/decal/warning_stripes/south, /turf/simulated/floor/plasteel, @@ -59926,6 +60517,12 @@ }, /turf/simulated/floor/engine/plasma, /area/atmos) +"bZO" = ( +/obj/effect/decal/cleanable/dirt, +/turf/simulated/wall, +/area/maintenance/aft{ + name = "Aft Maintenance" + }) "bZP" = ( /turf/simulated/wall, /area/maintenance/portsolar) @@ -61055,14 +61652,21 @@ /turf/simulated/floor/plasteel, /area/hallway/primary/central) "cbJ" = ( -/obj/item/radio/intercom{ - frequency = 1459; - name = "Station Intercom (General)"; - pixel_y = 28 +/obj/machinery/light_switch{ + pixel_x = -25; + pixel_y = -5 }, -/obj/effect/decal/warning_stripes/southeast, -/turf/simulated/floor/plasteel, -/area/atmos) +/obj/machinery/status_display{ + density = 0; + layer = 4; + pixel_y = 32 + }, +/obj/machinery/suit_storage_unit/cmo, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) "cbK" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ req_access_txt = 1 @@ -61193,34 +61797,29 @@ name = "\improper Toxins Lab" }) "cca" = ( -/obj/machinery/light_switch{ - pixel_y = 28 +/obj/machinery/camera{ + c_tag = "Security Post - Medbay"; + dir = 2; + network = list("SS13","Medbay") }, -/obj/machinery/atmospherics/pipe/simple/visible/purple{ - dir = 6 - }, -/obj/structure/rack, -/obj/item/clothing/shoes/magboots, -/obj/item/clothing/mask/breath, -/obj/item/clothing/suit/space/hardsuit/engine/atmos, -/turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "caution" - }, -/area/atmos) -"ccb" = ( -/obj/machinery/atmospherics/pipe/simple/visible/purple{ - dir = 4 - }, -/obj/structure/rack, -/obj/item/clothing/shoes/magboots, -/obj/item/clothing/mask/breath, -/obj/item/clothing/suit/space/hardsuit/engine/atmos, /turf/simulated/floor/plasteel{ dir = 1; - icon_state = "caution" + icon_state = "whiteblue" }, -/area/atmos) +/area/medical/paramedic) +"ccb" = ( +/obj/machinery/door_control{ + id = "paramedic"; + name = "Garage Door Control"; + pixel_x = -1; + pixel_y = 24; + req_access_txt = "66" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/paramedic) "ccc" = ( /obj/effect/decal/cleanable/fungus, /turf/simulated/wall, @@ -61288,6 +61887,13 @@ }, /turf/simulated/floor/engine/co2, /area/atmos) +"cck" = ( +/obj/structure/closet/secure_closet/paramedic, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "whiteblue" + }, +/area/medical/paramedic) "ccl" = ( /obj/effect/landmark{ name = "JoinLateGateway" @@ -61983,9 +62589,27 @@ /turf/simulated/floor/plating, /area/maintenance/starboard) "cdq" = ( -/obj/effect/decal/warning_stripes/southwest, -/turf/simulated/floor/plasteel, -/area/atmos) +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6; + level = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 4; + icon_state = "2-4" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2{ + name = "Medbay Storage" + }) "cdr" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -62316,8 +62940,29 @@ name = "Medbay Storage" }) "cdU" = ( -/turf/simulated/wall, -/area/security/checkpoint/medical) +/obj/structure/disposalpipe/segment{ + dir = 8; + icon_state = "pipe-c" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4; + level = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay2{ + name = "Medbay Storage" + }) "cdV" = ( /obj/machinery/door/poddoor/multi_tile/four_tile_hor{ id_tag = "escapepodbay" @@ -62476,14 +63121,26 @@ name = "Aft Maintenance" }) "cel" = ( -/obj/effect/spawner/window/reinforced, +/obj/machinery/door/airlock/medical{ + name = "Paramedic" + }, +/obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4; + level = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/turf/simulated/floor/plating, -/area/security/checkpoint/science{ - name = "Security Post - Research Division" - }) +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/paramedic) "cem" = ( /obj/effect/decal/warning_stripes/east, /turf/simulated/floor/plating, @@ -62524,6 +63181,15 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/wall/r_wall, /area/tcommsat/server) +"ceq" = ( +/obj/machinery/door/airlock/medical{ + name = "Paramedic" + }, +/obj/machinery/door/firedoor, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/paramedic) "cer" = ( /obj/structure/window/reinforced{ dir = 8 @@ -62723,19 +63389,23 @@ }, /area/atmos) "ceL" = ( -/obj/effect/spawner/window/reinforced, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4; + level = 1 }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 }, -/turf/simulated/floor/plating, -/area/security/checkpoint/science{ - name = "Security Post - Research Division" - }) +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 8; + icon_state = "1-8" + }, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "whiteblue" + }, +/area/medical/paramedic) "ceM" = ( /obj/structure/spacepoddoor{ dir = 4; @@ -62810,29 +63480,17 @@ /turf/simulated/floor/plating, /area/maintenance/starboard) "ceS" = ( -/obj/item/paper_bin{ - pixel_x = 1; - pixel_y = 9 - }, -/obj/item/pen{ - pixel_x = -3; - pixel_y = 5 - }, +/obj/structure/bed/amb_trolley, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 + dir = 10 }, -/obj/structure/table/reinforced, -/obj/machinery/camera{ - c_tag = "Security Post - Cargo"; - dir = 1; - network = list("SS13") +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 }, /turf/simulated/floor/plasteel{ - icon_state = "red" + icon_state = "white" }, -/area/security/checkpoint/supply{ - name = "Security Post - Cargo" - }) +/area/medical/paramedic) "ceT" = ( /obj/machinery/mech_bay_recharge_port, /obj/structure/cable/yellow{ @@ -63203,10 +63861,13 @@ name = "Research Division" }) "cfx" = ( -/turf/simulated/wall, -/area/security/checkpoint/science{ - name = "Security Post - Research Division" - }) +/obj/effect/landmark/start{ + name = "Paramedic" + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/paramedic) "cfy" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -63280,47 +63941,24 @@ }, /area/hydroponics) "cfE" = ( -/obj/machinery/door_control{ - id = "paramedic"; - name = "Garage Door Control"; - pixel_x = -1; - pixel_y = 24; - req_access_txt = "66" +/obj/machinery/constructable_frame, +/turf/simulated/floor/plating, +/area/maintenance/aft{ + name = "Aft Maintenance" + }) +"cfF" = ( +/obj/machinery/atmospherics/unary/vent_pump{ + dir = 4; + on = 1 }, -/obj/machinery/alarm{ - dir = 8; - pixel_x = 25 +/obj/structure/extinguisher_cabinet{ + pixel_x = -27 }, /turf/simulated/floor/plasteel{ - icon_state = "white" + dir = 10; + icon_state = "whiteblue" }, /area/medical/paramedic) -"cfF" = ( -/obj/item/pen{ - pixel_x = -3; - pixel_y = 5 - }, -/obj/structure/table/reinforced, -/obj/structure/reagent_dispensers/peppertank{ - pixel_x = 30 - }, -/obj/item/folder/red, -/obj/item/book/manual/security_space_law{ - pixel_x = 3; - pixel_y = 4 - }, -/obj/machinery/newscaster/security_unit{ - pixel_y = 32 - }, -/obj/item/screwdriver{ - pixel_y = 10 - }, -/obj/item/radio/off, -/turf/simulated/floor/plasteel{ - icon_state = "red"; - dir = 5 - }, -/area/security/checkpoint/medical) "cfG" = ( /obj/structure/extinguisher_cabinet{ pixel_x = -27 @@ -63666,18 +64304,18 @@ /turf/simulated/floor/wood, /area/ntrep) "cgr" = ( -/obj/machinery/computer/security/telescreen{ - desc = "Used for monitoring medbay to ensure patient safety."; - dir = 1; - name = "Medbay Monitor"; - network = list("Medbay"); - pixel_x = -29 +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 8; + on = 1; + scrub_N2O = 0; + scrub_Toxins = 0 }, +/obj/machinery/light, /turf/simulated/floor/plasteel{ - icon_state = "red"; - dir = 8 + dir = 2; + icon_state = "whiteblue" }, -/area/security/checkpoint/medical) +/area/medical/paramedic) "cgs" = ( /obj/structure/table/wood, /obj/item/paper_bin{ @@ -63878,50 +64516,26 @@ name = "Port Maintenance" }) "cgI" = ( -/obj/structure/table, -/obj/machinery/recharger{ - pixel_y = 4 - }, -/obj/machinery/light_switch{ - pixel_x = -27; - pixel_y = 6 - }, -/obj/machinery/newscaster/security_unit{ - pixel_y = 32 +/obj/structure/closet/paramedic, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = 28; + pixel_y = 5 }, /turf/simulated/floor/plasteel{ - icon_state = "red"; - dir = 9 + dir = 4; + icon_state = "whiteblue" }, -/area/security/checkpoint/science{ - name = "Security Post - Research Division" - }) +/area/medical/paramedic) "cgJ" = ( -/obj/structure/table, -/obj/machinery/requests_console{ - department = "Security"; - departmentType = 5; - pixel_y = 30 - }, -/obj/machinery/door_control{ - id = "Biohazard"; - name = "Biohazard Shutter Control"; - pixel_y = 7; - req_access_txt = "47" - }, -/obj/machinery/door_control{ - desc = "A remote control switch for the medbay foyer."; - id = "ResearchFoyer"; - name = "Research Door Button"; - normaldoorcontrol = 1; - pixel_y = -2 - }, -/turf/simulated/floor/plasteel{ - icon_state = "red"; +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 1 }, -/area/security/checkpoint/science{ - name = "Security Post - Research Division" +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/medbay2{ + name = "Medbay Storage" }) "cgK" = ( /obj/structure/table, @@ -64536,8 +65150,19 @@ name = "Medbay Storage" }) "chL" = ( +/obj/machinery/hologram/holopad, +/obj/effect/landmark/start{ + name = "Medical Doctor" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 + dir = 9; + level = 1 + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, /turf/simulated/floor/plasteel{ icon_state = "white" @@ -64658,15 +65283,27 @@ name = "Medbay Storage" }) "chV" = ( -/obj/vehicle/ambulance, +/obj/machinery/hologram/holopad, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 5; + level = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 9; + level = 1 + }, /turf/simulated/floor/plasteel{ - icon_state = "white" + dir = 2; + icon_state = "whiteblue" }, /area/medical/paramedic) "chW" = ( -/obj/machinery/computer/crew, +/obj/structure/chair/office/light{ + dir = 4 + }, /turf/simulated/floor/plasteel{ - icon_state = "white" + dir = 2; + icon_state = "whiteblue" }, /area/medical/paramedic) "chX" = ( @@ -64695,21 +65332,16 @@ }, /area/atmos) "chZ" = ( -/obj/machinery/requests_console{ - department = "Security"; - departmentType = 5; - pixel_y = 30 - }, -/obj/machinery/camera{ - c_tag = "Security Post - Medbay"; - dir = 2; - network = list("SS13","Medbay") +/obj/machinery/alarm{ + dir = 8; + pixel_x = 25 }, +/obj/machinery/computer/crew, /turf/simulated/floor/plasteel{ - icon_state = "red"; - dir = 9 + dir = 6; + icon_state = "whiteblue" }, -/area/security/checkpoint/medical) +/area/medical/paramedic) "cia" = ( /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, @@ -64806,48 +65438,61 @@ /turf/simulated/floor/plating, /area/atmos) "cik" = ( -/obj/item/screwdriver{ - pixel_y = 10 - }, -/obj/item/radio/off, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, /turf/simulated/floor/plasteel{ - icon_state = "red"; - dir = 8 + icon_state = "white" }, -/area/security/checkpoint/science{ - name = "Security Post - Research Division" +/area/medical/medbay2{ + name = "Medbay Storage" }) "cil" = ( -/obj/machinery/atmospherics/unary/vent_pump{ - on = 1 - }, -/obj/structure/chair/office/dark{ - dir = 1 - }, -/turf/simulated/floor/plasteel, -/area/security/checkpoint/science{ - name = "Security Post - Research Division" - }) -"cim" = ( -/obj/machinery/computer/secure_data, -/obj/item/book/manual/security_space_law, -/obj/machinery/computer/security/telescreen{ - desc = "Used for watching the RD's goons from the safety of his office."; +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ dir = 8; - name = "Research Monitor"; - network = list("RD"); - pixel_x = 28; - pixel_y = 2 + initialize_directions = 11 + }, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" }, /turf/simulated/floor/plasteel{ - icon_state = "red"; - dir = 4 + icon_state = "white" }, -/area/security/checkpoint/science{ - name = "Security Post - Research Division" +/area/medical/medbay2{ + name = "Medbay Storage" + }) +"cim" = ( +/obj/item/storage/firstaid/regular{ + pixel_x = 3; + pixel_y = -3 + }, +/obj/item/storage/firstaid/toxin{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/firstaid/toxin, +/obj/item/storage/firstaid/toxin{ + pixel_x = -3; + pixel_y = -3 + }, +/obj/structure/table/glass, +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 8; + on = 1; + scrub_N2O = 0; + scrub_Toxins = 0 + }, +/turf/simulated/floor/plasteel{ + dir = 4; + icon_state = "whiteblue" + }, +/area/medical/medbay2{ + name = "Medbay Storage" }) "cin" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -65316,23 +65961,29 @@ }, /area/atmos) "ciX" = ( -/obj/structure/reagent_dispensers/peppertank{ - pixel_x = 30 - }, -/obj/structure/chair{ - dir = 8 - }, -/obj/machinery/camera{ - c_tag = "Security Post - Research Division"; - dir = 8; - network = list("SS13","RD") +/obj/structure/closet/crate/freezer, +/obj/item/reagent_containers/iv_bag, +/obj/item/reagent_containers/iv_bag, +/obj/item/reagent_containers/iv_bag, +/obj/machinery/light{ + dir = 1; + on = 1 }, /turf/simulated/floor/plasteel{ - icon_state = "red"; - dir = 4 + dir = 9; + icon_state = "whiteblue" }, -/area/security/checkpoint/science{ - name = "Security Post - Research Division" +/area/medical/medbay2{ + name = "Medbay Storage" + }) +"ciY" = ( +/obj/machinery/iv_drip, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/medbay2{ + name = "Medbay Storage" }) "ciZ" = ( /obj/machinery/disposal{ @@ -65586,58 +66237,73 @@ name = "\improper Warehouse" }) "cjw" = ( -/obj/structure/disposalpipe/segment{ - dir = 8; - icon_state = "pipe-c" +/obj/machinery/alarm{ + pixel_y = 24 }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 6 + }, +/obj/structure/bed/roller, /turf/simulated/floor/plasteel{ - dir = 4; + dir = 1; icon_state = "whiteblue" }, /area/medical/medbay2{ name = "Medbay Storage" }) "cjx" = ( -/obj/structure/bed/amb_trolley, -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 8; - icon_state = "2-8" +/obj/machinery/camera{ + c_tag = "Security Post - Medbay"; + dir = 2; + network = list("SS13","Medbay") }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/medical/paramedic) -"cjy" = ( -/obj/effect/landmark/start{ - name = "Paramedic" - }, -/obj/machinery/power/apc{ +/obj/machinery/atmospherics/unary/vent_pump{ dir = 8; - name = "west bump"; - pixel_x = -24; - shock_proof = 0 - }, -/obj/structure/cable/yellow{ - d2 = 4; - icon_state = "0-4" + external_pressure_bound = 101.325; + on = 1; + pressure_checks = 1 }, /turf/simulated/floor/plasteel{ - icon_state = "white" + dir = 1; + icon_state = "whiteblue" }, -/area/medical/paramedic) +/area/medical/medbay2{ + name = "Medbay Storage" + }) +"cjy" = ( +/obj/machinery/door/firedoor, +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/medical/medbay2{ + name = "Medbay Storage" + }) "cjz" = ( /turf/simulated/floor/plasteel{ icon_state = "white" }, /area/medical/paramedic) "cjA" = ( -/obj/structure/closet/secure_closet/security/med, -/turf/simulated/floor/plasteel{ - icon_state = "red"; - dir = 4 +/obj/structure/cable/yellow{ + d1 = 2; + d2 = 8; + icon_state = "2-8" }, -/area/security/checkpoint/medical) +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/yellow{ + d1 = 1; + d2 = 2; + icon_state = "1-2" + }, +/turf/simulated/floor/plasteel{ + dir = 2; + icon_state = "whiteblue" + }, +/area/medical/medbay2{ + name = "Medbay Storage" + }) "cjB" = ( /obj/machinery/meter, /obj/structure/disposalpipe/segment{ @@ -65669,10 +66335,19 @@ }, /area/medical/reception) "cjD" = ( -/obj/effect/spawner/window/reinforced, -/obj/machinery/door/firedoor, -/turf/simulated/floor/plating, -/area/security/checkpoint/medical) +/obj/structure/table/glass, +/obj/item/storage/toolbox/emergency, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -24 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "whiteblue" + }, +/area/medical/medbay2{ + name = "Medbay Storage" + }) "cjE" = ( /obj/structure/chair, /turf/simulated/floor/plasteel{ @@ -65817,74 +66492,62 @@ name = "Research Division" }) "cjO" = ( -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 6; + level = 1 }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 1 +/turf/simulated/floor/plasteel{ + dir = 2; + icon_state = "whiteblue" }, +/area/medical/medbay2{ + name = "Medbay Storage" + }) +"cjP" = ( /obj/machinery/atmospherics/unary/vent_scrubber{ - dir = 1; + dir = 8; on = 1; + scrub_N2O = 0; scrub_Toxins = 0 }, /turf/simulated/floor/plasteel{ - icon_state = "white" + dir = 2; + icon_state = "whiteblue" }, -/area/medical/research{ - name = "Research Division" - }) -"cjP" = ( -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/medical/research{ - name = "Research Division" +/area/medical/medbay2{ + name = "Medbay Storage" }) "cjQ" = ( /obj/effect/spawner/window/reinforced, /turf/simulated/floor/plating, /area/medical/chemistry) "cjR" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 8; - icon_state = "2-8" - }, +/obj/structure/table/glass, +/obj/item/roller, +/obj/item/roller, +/obj/item/roller, /turf/simulated/floor/plasteel{ - icon_state = "red"; - dir = 8 + dir = 6; + icon_state = "whiteblue" }, -/area/security/checkpoint/science{ - name = "Security Post - Research Division" +/area/medical/medbay2{ + name = "Medbay Storage" }) "cjS" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 + dir = 4 }, -/turf/simulated/floor/plasteel, -/area/security/checkpoint/science{ - name = "Security Post - Research Division" +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/reception) +"cjT" = ( +/obj/effect/spawner/window/reinforced, +/turf/simulated/floor/plating, +/area/medical/medbay2{ + name = "Medbay Storage" }) "cjU" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -65914,26 +66577,18 @@ /turf/simulated/floor/plating, /area/maintenance/starboard) "cjY" = ( -/obj/machinery/firealarm{ - dir = 8; - pixel_x = -26; - pixel_y = 28 - }, -/obj/machinery/power/apc{ - dir = 8; - name = "Medical Security Checkpoint APC"; - pixel_x = -24 - }, /obj/structure/cable/yellow{ - d2 = 2; - icon_state = "0-2" + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel{ - icon_state = "red"; - dir = 8 + icon_state = "white" }, -/area/security/checkpoint/medical) +/area/medical/reception) "cjZ" = ( /obj/machinery/alarm{ dir = 1; @@ -66138,6 +66793,17 @@ /area/medical/research{ name = "Research Division" }) +"ckt" = ( +/obj/machinery/camera{ + c_tag = "Medbay Break Room"; + dir = 1; + network = list("SS13","Medbay") + }, +/turf/simulated/floor/plasteel{ + dir = 2; + icon_state = "whiteblue" + }, +/area/medical/reception) "cku" = ( /obj/machinery/firealarm{ dir = 1; @@ -66293,25 +66959,19 @@ name = "Medbay Storage" }) "ckG" = ( -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = 1; - pixel_y = 9 - }, -/obj/item/pen{ - pixel_x = -3; - pixel_y = 5 - }, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 24 +/obj/machinery/door/airlock/medical/glass{ + id_tag = null; + name = "Medbay Storage"; + req_access_txt = "5" }, +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel{ - icon_state = "red"; - dir = 5 + icon_state = "white" }, -/area/security/checkpoint/science{ - name = "Security Post - Research Division" +/area/medical/medbay2{ + name = "Medbay Storage" }) "ckH" = ( /obj/structure/rack, @@ -66328,23 +66988,14 @@ name = "Aft Maintenance" }) "ckI" = ( -/obj/item/storage/firstaid/regular{ - pixel_x = 3; - pixel_y = -3 +/obj/machinery/door/airlock/medical/glass{ + id_tag = null; + name = "Medbay Storage"; + req_access_txt = "5" }, -/obj/item/storage/firstaid/toxin{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/firstaid/toxin, -/obj/item/storage/firstaid/toxin{ - pixel_x = -3; - pixel_y = -3 - }, -/obj/structure/table/glass, +/obj/machinery/door/firedoor, /turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "whiteblue" + icon_state = "white" }, /area/medical/medbay2{ name = "Medbay Storage" @@ -66360,16 +67011,12 @@ name = "Aft Maintenance" }) "ckK" = ( -/obj/machinery/hologram/holopad, -/obj/effect/landmark/start{ - name = "Medical Doctor" - }, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel{ icon_state = "white" }, -/area/medical/medbay2{ - name = "Medbay Storage" - }) +/area/medical/reception) "ckL" = ( /obj/item/storage/box/bodybags{ pixel_x = 3; @@ -66392,84 +67039,73 @@ name = "Medbay Storage" }) "ckM" = ( -/obj/machinery/hologram/holopad, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 6; - level = 1 - }, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 + dir = 4 + }, +/obj/machinery/power/apc{ + dir = 1; + name = "Medbay Central APC"; + pixel_y = 24 + }, +/obj/structure/cable/yellow{ + d2 = 2; + icon_state = "0-2" + }, +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/reception) +"ckN" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/obj/effect/landmark/start{ + name = "Medical Doctor" + }, +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ + dir = 2; + initialize_directions = 11 + }, +/turf/simulated/floor/plasteel{ + icon_state = "white" + }, +/area/medical/reception) +"ckO" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" }, /obj/structure/cable/yellow{ d1 = 1; - d2 = 2; - icon_state = "1-2" + d2 = 4; + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 }, /turf/simulated/floor/plasteel{ icon_state = "white" }, -/area/medical/paramedic) -"ckN" = ( -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/obj/machinery/atmospherics/unary/vent_pump{ - dir = 4; - on = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/medical/paramedic) -"ckO" = ( -/obj/machinery/camera{ - c_tag = "Paramedic"; - dir = 8; - network = list("SS13","Medbay") - }, -/obj/machinery/atmospherics/unary/vent_scrubber{ - dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = 28; - pixel_y = 5 - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/medical/paramedic) +/area/medical/reception) "ckP" = ( -/obj/machinery/computer/secure_data, -/turf/simulated/floor/plasteel{ - icon_state = "red"; - dir = 6 - }, -/area/security/checkpoint/medical) +/obj/item/healthanalyzer, +/turf/simulated/floor/plating, +/area/maintenance/aft{ + name = "Aft Maintenance" + }) "ckQ" = ( -/obj/item/radio/intercom{ - dir = 0; - name = "Station Intercom (General)"; - pixel_x = -27; - pixel_y = -10 - }, -/obj/machinery/light{ - icon_state = "tube1"; - dir = 8 - }, -/obj/machinery/atmospherics/unary/vent_pump{ - dir = 2; - on = 1 +/obj/structure/chair{ + dir = 4 }, /turf/simulated/floor/plasteel{ - icon_state = "red"; - dir = 8 + dir = 2; + icon_state = "whiteblue" }, -/area/security/checkpoint/medical) +/area/medical/medbay3) "ckR" = ( /obj/structure/cable/yellow{ d1 = 2; @@ -66530,18 +67166,6 @@ /obj/structure/disposalpipe/segment, /turf/simulated/floor/plasteel, /area/hallway/primary/aft) -"ckW" = ( -/obj/machinery/autolathe{ - icon_state = "autolathe"; - name = "public autolathe" - }, -/turf/simulated/floor/plasteel{ - dir = 2; - icon_state = "whitepurple" - }, -/area/medical/research{ - name = "Research Division" - }) "ckX" = ( /obj/structure/table, /obj/machinery/cell_charger, @@ -66654,51 +67278,46 @@ }, /area/maintenance/incinerator) "clf" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 5 - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, +/obj/structure/table, +/obj/item/soap/nanotrasen, /turf/simulated/floor/plasteel{ - icon_state = "red"; - dir = 8 + dir = 2; + icon_state = "whiteblue" }, -/area/security/checkpoint/science{ - name = "Security Post - Research Division" - }) +/area/medical/medbay3) "clg" = ( -/obj/machinery/atmospherics/unary/vent_scrubber{ - dir = 8; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/simulated/floor/plasteel, -/area/security/checkpoint/science{ - name = "Security Post - Research Division" - }) -"clh" = ( -/obj/item/radio/intercom{ - dir = 4; - name = "Station Intercom (General)"; - pixel_x = 27 - }, -/obj/machinery/light{ - dir = 4 - }, /obj/structure/chair{ dir = 8 }, /turf/simulated/floor/plasteel{ - icon_state = "red"; - dir = 4 + dir = 2; + icon_state = "whiteblue" }, -/area/security/checkpoint/science{ - name = "Security Post - Research Division" - }) +/area/medical/medbay3) +"clh" = ( +/obj/item/storage/box/rxglasses{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/storage/box/bodybags, +/obj/item/pen{ + pixel_x = -3; + pixel_y = 5 + }, +/obj/structure/table/glass, +/obj/machinery/door_control{ + desc = "A remote control switch for the cloning door."; + id = "CloningDoor"; + name = "Cloning Exit Button"; + normaldoorcontrol = 1; + pixel_x = -23; + pixel_y = 8 + }, +/turf/simulated/floor/plasteel{ + dir = 10; + icon_state = "whiteblue" + }, +/area/medical/genetics_cloning) "cli" = ( /obj/structure/closet/crate/internals, /obj/effect/spawner/lootdrop/maintenance{ @@ -67016,24 +67635,16 @@ /turf/space, /area/space/nearstation) "clI" = ( -/obj/machinery/requests_console{ - announcementConsole = 0; - department = "Medbay"; - departmentType = 1; - name = "Medbay RC"; - pixel_y = 30; - pixel_z = 0 - }, -/obj/structure/table/glass, -/obj/item/storage/toolbox/emergency, -/obj/machinery/light/small{ - dir = 1 +/obj/item/radio/intercom{ + dir = 8; + name = "station intercom (General)"; + pixel_x = -28 }, +/obj/machinery/optable, /turf/simulated/floor/plasteel{ - dir = 9; - icon_state = "whiteblue" + icon_state = "dark" }, -/area/medical/reception) +/area/medical/morgue) "clJ" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -67090,18 +67701,15 @@ name = "Aft Maintenance" }) "clQ" = ( -/obj/structure/girder, -/obj/structure/grille, -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 4; - icon_state = "2-4" +/obj/effect/landmark/start{ + name = "Coroner" }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/turf/simulated/floor/plating, -/area/maintenance/aft{ - name = "Aft Maintenance" - }) +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) "clR" = ( /obj/structure/reagent_dispensers/watertank, /obj/item/storage/box/lights/mixed, @@ -67145,21 +67753,14 @@ name = "Aft Maintenance" }) "clV" = ( -/obj/machinery/alarm{ - dir = 4; - pixel_x = -23 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" +/obj/structure/window/reinforced{ + dir = 4 }, +/obj/structure/closet/wardrobe/coroner, /turf/simulated/floor/plasteel{ - icon_state = "red"; - dir = 10 + icon_state = "dark" }, -/area/security/checkpoint/medical) +/area/medical/morgue) "clW" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -67207,7 +67808,8 @@ }) "clZ" = ( /turf/simulated/floor/plasteel{ - icon_state = "white" + dir = 2; + icon_state = "whiteblue" }, /area/medical/medbay2{ name = "Medbay Storage" @@ -67224,43 +67826,72 @@ }, /area/medical/reception) "cmb" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 10 }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/medical/paramedic) -"cmc" = ( -/obj/structure/closet/paramedic, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/medical/paramedic) -"cmd" = ( -/obj/structure/closet/secure_closet/paramedic, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/medical/paramedic) -"cme" = ( -/obj/machinery/computer/crew, -/turf/simulated/floor/plasteel{ - icon_state = "red"; - dir = 4 - }, -/area/security/checkpoint/medical) -"cmf" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/plasteel{ - icon_state = "red"; +/obj/structure/morgue{ + tag = "icon-morgue1 (WEST)"; + icon_state = "morgue1"; dir = 8 }, -/area/security/checkpoint/medical) +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"cmc" = ( +/obj/machinery/atmospherics/unary/vent_scrubber{ + dir = 2; + on = 1; + scrub_N2O = 0; + scrub_Toxins = 0 + }, +/obj/structure/table, +/obj/item/autopsy_scanner, +/obj/item/camera{ + name = "Autopsy Camera"; + pixel_x = -2; + pixel_y = -2 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"cmd" = ( +/obj/structure/window/reinforced{ + dir = 4 + }, +/obj/structure/window/reinforced, +/obj/structure/filingcabinet/chestdrawer/autopsy, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"cme" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/morgue{ + tag = "icon-morgue1 (WEST)"; + icon_state = "morgue1"; + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"cmf" = ( +/obj/machinery/power/apc{ + dir = 4; + name = "Morgue APC"; + pixel_x = 26 + }, +/obj/structure/cable/yellow{ + d1 = 0; + d2 = 2; + icon_state = "0-2" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) "cmg" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -67384,41 +68015,42 @@ /turf/simulated/wall, /area/medical/reception) "cmu" = ( -/obj/machinery/power/apc{ - dir = 8; - name = "Security Post - Research Division APC"; - pixel_x = -24 +/obj/machinery/atmospherics/unary/vent_pump, +/obj/machinery/door/window/eastright{ + name = "Coroner Office"; + req_access_txt = "5" }, -/obj/structure/cable/yellow, /turf/simulated/floor/plasteel{ - icon_state = "red"; - dir = 10 + icon_state = "dark" }, -/area/security/checkpoint/science{ - name = "Security Post - Research Division" - }) +/area/medical/morgue) "cmv" = ( -/obj/structure/closet/secure_closet/security/science, -/turf/simulated/floor/plasteel{ - icon_state = "red" +/obj/machinery/door_control{ + id = "cmoprivacy"; + name = "Privacy Shutters Control"; + pixel_x = -26; + pixel_y = 4 }, -/area/security/checkpoint/science{ - name = "Security Post - Research Division" - }) -"cmw" = ( -/obj/structure/filingcabinet, -/obj/machinery/alarm{ +/obj/machinery/keycard_auth{ + pixel_x = -26; + pixel_y = -7 + }, +/obj/structure/filingcabinet/filingcabinet, +/turf/simulated/floor/plasteel{ dir = 8; - icon_state = "alarm0"; - pixel_x = 24 + icon_state = "barber" + }, +/area/medical/cmo) +"cmw" = ( +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" }, /turf/simulated/floor/plasteel{ - icon_state = "red"; - dir = 6 + icon_state = "dark" }, -/area/security/checkpoint/science{ - name = "Security Post - Research Division" - }) +/area/medical/morgue) "cmx" = ( /obj/structure/closet/crate, /obj/item/coin/silver, @@ -67735,59 +68367,43 @@ name = "Aft Maintenance" }) "cna" = ( -/obj/machinery/atmospherics/unary/vent_scrubber{ - dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/medical/medbay2{ - name = "Medbay Storage" - }) -"cnb" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock{ - name = "Paramedic"; - req_access_txt = "66" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/cable/yellow{ + d1 = 4; + d2 = 8; + icon_state = "4-8" + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) +"cnb" = ( +/obj/machinery/light/small{ + dir = 4 + }, /obj/structure/cable/yellow{ d1 = 1; - d2 = 2; - icon_state = "1-2" + d2 = 8; + icon_state = "1-8" }, /turf/simulated/floor/plasteel{ - dir = 2; - icon_state = "whiteblue" + icon_state = "dark" }, -/area/medical/paramedic) +/area/medical/morgue) "cnc" = ( -/obj/structure/chair/office/light{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/door_control{ - desc = "A remote control switch for the medbay foyer."; - id = "MedbayFoyer"; - name = "Medbay Doors Control"; - normaldoorcontrol = 1; - pixel_x = 24; - pixel_y = 24 - }, -/obj/machinery/atmospherics/unary/vent_scrubber{ - dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply, +/obj/effect/landmark/start{ + name = "Coroner" }, +/obj/structure/chair/office/dark, /turf/simulated/floor/plasteel{ - icon_state = "red"; - dir = 4 + icon_state = "dark" }, -/area/security/checkpoint/medical) +/area/medical/morgue) "cnd" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ req_access_txt = 1 @@ -67816,10 +68432,17 @@ }, /area/medical/reception) "cnf" = ( -/obj/machinery/door/firedoor, -/obj/effect/spawner/window/reinforced, -/turf/simulated/floor/plating, -/area/security/checkpoint/medical) +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/morgue, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) "cng" = ( /obj/structure/noticeboard{ desc = "A board for pinning important notices upon."; @@ -67843,6 +68466,12 @@ }, /obj/item/storage/box/donkpockets, /obj/structure/table/glass, +/obj/machinery/atmospherics/unary/vent_pump{ + dir = 4; + external_pressure_bound = 101.325; + on = 1; + pressure_checks = 1 + }, /turf/simulated/floor/plasteel{ tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; @@ -68039,6 +68668,10 @@ pixel_y = 32 }, /obj/structure/chair/stool, +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4; + level = 1 + }, /mob/living/simple_animal/pet/dog/corgi/borgi, /turf/simulated/floor/plasteel{ tag = "icon-cafeteria (NORTHEAST)"; @@ -68096,38 +68729,38 @@ }, /area/toxins/lab) "cnC" = ( -/turf/simulated/wall/r_wall, -/area/security/checkpoint/science{ - name = "Security Post - Research Division" - }) -"cnD" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/security/glass{ - name = "Security Post - Research Division"; - req_access_txt = "63" +/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, +/obj/machinery/atmospherics/unary/vent_pump{ + dir = 8; + external_pressure_bound = 101.325; + on = 1; + pressure_checks = 1 }, /turf/simulated/floor/plasteel{ - icon_state = "redfull" + icon_state = "dark" }, -/area/security/checkpoint/science{ - name = "Security Post - Research Division" - }) +/area/medical/morgue) +"cnD" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ + dir = 4 + }, +/obj/structure/morgue{ + tag = "icon-morgue1 (WEST)"; + icon_state = "morgue1"; + dir = 8 + }, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) "cnE" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" +/obj/structure/table, +/obj/item/storage/box/bodybags, +/obj/item/storage/box/bodybags, +/turf/simulated/floor/plasteel{ + icon_state = "dark" }, -/obj/machinery/door/airlock/maintenance{ - req_access_txt = "0"; - req_one_access_txt = "12;47" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/plating, -/area/maintenance/aft{ - name = "Aft Maintenance" - }) +/area/medical/morgue) "cnF" = ( /obj/machinery/vending/cigarette, /obj/machinery/status_display{ @@ -68152,6 +68785,10 @@ pixel_y = 7 }, /obj/structure/table/glass, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 1; + level = 1 + }, /turf/simulated/floor/plasteel{ tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; @@ -68173,7 +68810,8 @@ /area/maintenance/incinerator) "cnI" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ - req_access_txt = 1 + dir = 9; + level = 1 }, /turf/simulated/floor/plasteel{ tag = "icon-cafeteria (NORTHEAST)"; @@ -68274,6 +68912,18 @@ /obj/effect/decal/warning_stripes/west, /turf/simulated/floor/plating, /area/maintenance/starboard) +"cnS" = ( +/obj/structure/table/glass, +/obj/item/paper_bin{ + pixel_x = -2; + pixel_y = 5 + }, +/obj/item/pen, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) "cnT" = ( /obj/machinery/chem_heater{ pixel_x = -4; @@ -68478,23 +69128,25 @@ icon_state = "whiteblue" }, /area/medical/exam_room) -"com" = ( -/obj/structure/cable/yellow{ - d1 = 2; - d2 = 8; - icon_state = "2-8" +"col" = ( +/obj/structure/window/reinforced{ + dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/photocopier, /turf/simulated/floor/plasteel{ - dir = 2; - icon_state = "whiteblue" + icon_state = "dark" }, -/area/medical/medbay2{ - name = "Medbay Storage" - }) +/area/medical/morgue) +"com" = ( +/obj/machinery/light/small, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/morgue, +/turf/simulated/floor/plasteel{ + icon_state = "dark" + }, +/area/medical/morgue) "con" = ( /obj/effect/spawner/window/reinforced, /obj/machinery/door/poddoor{ @@ -68533,18 +69185,13 @@ name = "Medbay Storage" }) "coq" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" +/obj/structure/disposalpipe/segment{ + dir = 4 }, /turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "whiteblue" + icon_state = "dark" }, -/area/medical/reception) +/area/medical/morgue) "cor" = ( /obj/machinery/door_control{ id = "turbinevent"; @@ -68557,38 +69204,30 @@ }, /area/maintenance/incinerator) "cos" = ( -/obj/machinery/alarm{ - pixel_y = 24 +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/structure/table/glass, -/obj/item/roller{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/roller{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/roller, -/obj/machinery/light/small{ - dir = 1 +/obj/structure/morgue{ + tag = "icon-morgue1 (WEST)"; + icon_state = "morgue1"; + dir = 8 }, /turf/simulated/floor/plasteel{ - dir = 5; - icon_state = "whiteblue" + icon_state = "dark" }, -/area/medical/reception) +/area/medical/morgue) "cot" = ( -/obj/structure/table/reinforced, -/obj/machinery/recharger{ - pixel_y = 4 +/obj/machinery/light_switch{ + pixel_x = 23 }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/machinery/disposal, /turf/simulated/floor/plasteel{ - icon_state = "red"; - dir = 6 + icon_state = "dark" }, -/area/security/checkpoint/medical) +/area/medical/morgue) "cou" = ( /obj/machinery/ignition_switch{ id = "Turbine_igniter"; @@ -68752,18 +69391,11 @@ }, /area/medical/exam_room) "coG" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" +/obj/machinery/light_switch{ + pixel_x = 23 }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/effect/decal/warning_stripes/south, -/turf/simulated/floor/plating, -/area/maintenance/aft{ - name = "Aft Maintenance" - }) +/turf/simulated/wall/r_wall, +/area/hallway/primary/aft) "coH" = ( /obj/structure/table, /obj/item/crowbar, @@ -68867,19 +69499,7 @@ /area/medical/reception) "coS" = ( /obj/structure/chair/stool, -/turf/simulated/floor/plasteel{ - tag = "icon-cafeteria (NORTHEAST)"; - icon_state = "cafeteria"; - dir = 5 - }, -/area/medical/research{ - name = "Research Division" - }) -"coT" = ( -/obj/machinery/atmospherics/unary/vent_pump{ - dir = 2; - on = 1 - }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel{ tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; @@ -68890,9 +69510,6 @@ }) "coU" = ( /obj/item/cigbutt, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - req_access_txt = 1 - }, /turf/simulated/floor/plasteel{ tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; @@ -69013,7 +69630,7 @@ name = "containment blast door"; opacity = 0 }, -/turf/simulated/floor/plating, +/turf/simulated/floor/engine, /area/toxins/xenobiology{ name = "\improper Secure Lab" }) @@ -69030,7 +69647,7 @@ name = "containment blast door"; opacity = 0 }, -/turf/simulated/floor/plating, +/turf/simulated/floor/engine, /area/toxins/xenobiology{ name = "\improper Secure Lab" }) @@ -69275,53 +69892,58 @@ name = "Medbay Storage" }) "cpF" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" +/obj/item/radio/intercom{ + dir = 1; + name = "Station Intercom (General)"; + pixel_y = -29 }, /turf/simulated/floor/plasteel{ - icon_state = "white" + dir = 8; + icon_state = "barber" }, -/area/medical/reception) +/area/medical/cmo) "cpG" = ( -/obj/structure/bed/roller, +/obj/structure/table/glass, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Chief Medical Officer's Desk"; + departmentType = 5; + name = "Chief Medical Officer RC"; + pixel_y = -32 + }, +/obj/machinery/computer/med_data/laptop, +/turf/simulated/floor/plasteel{ + dir = 8; + icon_state = "barber" + }, +/area/medical/cmo) +"cpH" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/camera{ + c_tag = "Chemistry"; + dir = 4; + network = list("SS13","Medbay") + }, +/obj/structure/filingcabinet/filingcabinet, /turf/simulated/floor/plasteel{ dir = 8; icon_state = "whiteblue" }, -/area/medical/reception) -"cpH" = ( -/obj/structure/bed/roller, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "whiteblue" - }, -/area/medical/reception) -"cpI" = ( -/obj/effect/spawner/window/reinforced, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/plating, -/area/security/checkpoint/medical) +/area/medical/medbay3) "cpJ" = ( -/obj/machinery/door/firedoor, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/door/airlock/security/glass{ - name = "Medbay Security Post"; - req_access_txt = "63" +/obj/structure/table, +/obj/item/paper_bin{ + pixel_y = -1 }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" +/obj/item/pen{ + pixel_x = -3; + pixel_y = 5 }, +/obj/machinery/light/small, /turf/simulated/floor/plasteel{ - icon_state = "red"; - dir = 1 + icon_state = "dark" }, -/area/security/checkpoint/medical) +/area/medical/morgue) "cpK" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -69426,30 +70048,22 @@ }, /area/medical/reception) "cpR" = ( -/obj/machinery/power/apc{ - cell_type = 10000; - dir = 1; - name = "Research Division APC"; - pixel_y = 25 +/obj/machinery/optable{ + name = "Robotics Operating Table" }, -/obj/structure/cable/yellow{ - d2 = 8; - icon_state = "0-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 +/obj/structure/extinguisher_cabinet{ + pixel_y = -30 }, /obj/machinery/camera{ - c_tag = "Research Division - Airlock"; - dir = 2; + c_tag = "Robotics - Aft"; + dir = 1; network = list("SS13","RD") }, /turf/simulated/floor/plasteel{ - icon_state = "white" + dir = 1; + icon_state = "whitehall" }, -/area/medical/research{ - name = "Research Division" - }) +/area/assembly/robotics) "cpS" = ( /obj/machinery/slot_machine{ pixel_y = 2 @@ -69574,18 +70188,10 @@ name = "containment blast door"; opacity = 0 }, -/turf/simulated/floor/plasteel, +/turf/simulated/floor/engine, /area/toxins/xenobiology{ name = "\improper Secure Lab" }) -"cqd" = ( -/obj/effect/decal/warning_stripes/yellow/hollow, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/medical/research{ - name = "Research Division" - }) "cqe" = ( /obj/machinery/r_n_d/destructive_analyzer, /obj/effect/decal/warning_stripes/north, @@ -69652,7 +70258,7 @@ name = "containment blast door"; opacity = 0 }, -/turf/simulated/floor/plasteel, +/turf/simulated/floor/engine, /area/toxins/xenobiology{ name = "\improper Secure Lab" }) @@ -69666,45 +70272,6 @@ icon_state = "neutralcorner" }, /area/hallway/primary/aft) -"cql" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 8; - initialize_directions = 11 - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/medical/research{ - name = "Research Division" - }) -"cqm" = ( -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/machinery/atmospherics/unary/vent_scrubber{ - dir = 4; - on = 1; - scrub_Toxins = 0 - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/medical/research{ - name = "Research Division" - }) "cqn" = ( /obj/structure/table, /obj/item/stock_parts/manipulator, @@ -69794,18 +70361,6 @@ name = "Research Division" }) "cqt" = ( -/turf/simulated/floor/plasteel{ - tag = "icon-cafeteria (NORTHEAST)"; - icon_state = "cafeteria"; - dir = 5 - }, -/area/medical/research{ - name = "Research Division" - }) -"cqu" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 8 - }, /turf/simulated/floor/plasteel{ tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; @@ -69841,44 +70396,10 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/engine, /area/toxins/explab) -"cqy" = ( -/obj/structure/sink{ - dir = 4; - icon_state = "sink"; - pixel_x = 11 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 9 - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/medical/research{ - name = "Research Division" - }) "cqz" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/engine, /area/toxins/explab) -"cqA" = ( -/obj/effect/landmark{ - name = "blobstart" - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/obj/item/cigbutt, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 8 - }, -/obj/effect/decal/warning_stripes/north, -/turf/simulated/floor/plating, -/area/maintenance/aft{ - name = "Aft Maintenance" - }) "cqB" = ( /obj/machinery/light{ dir = 4; @@ -69905,18 +70426,6 @@ /area/maintenance/aft{ name = "Aft Maintenance" }) -"cqD" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 9 - }, -/turf/simulated/floor/plasteel{ - tag = "icon-cafeteria (NORTHEAST)"; - icon_state = "cafeteria"; - dir = 5 - }, -/area/medical/research{ - name = "Research Division" - }) "cqE" = ( /obj/structure/table, /obj/item/storage/toolbox/emergency, @@ -70006,7 +70515,7 @@ name = "containment blast door"; opacity = 0 }, -/turf/simulated/floor/plating, +/turf/simulated/floor/engine, /area/toxins/xenobiology{ name = "\improper Secure Lab" }) @@ -70108,7 +70617,7 @@ name = "containment blast door"; opacity = 0 }, -/turf/simulated/floor/plating, +/turf/simulated/floor/engine, /area/toxins/xenobiology{ name = "\improper Secure Lab" }) @@ -70276,50 +70785,6 @@ icon_state = "whiteblue" }, /area/medical/reception) -"crn" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/medical/reception) -"cro" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "whitebluecorner" - }, -/area/medical/reception) -"crp" = ( -/obj/machinery/power/apc{ - dir = 1; - name = "Medbay Central APC"; - pixel_y = 24 - }, -/obj/structure/cable/yellow{ - d2 = 2; - icon_state = "0-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/camera{ - c_tag = "Medbay Hallway Fore"; - dir = 2; - network = list("SS13","Medbay") - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "whiteblue" - }, -/area/medical/reception) "crq" = ( /obj/machinery/camera{ c_tag = "Atmospherics Tank - Air"; @@ -70350,29 +70815,10 @@ name = "containment blast door"; opacity = 0 }, -/turf/simulated/floor/plating, +/turf/simulated/floor/engine, /area/toxins/xenobiology{ name = "\improper Secure Lab" }) -"crt" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 4; - icon_state = "whitebluecorner" - }, -/area/medical/reception) -"cru" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "whiteblue" - }, -/area/medical/reception) "crv" = ( /obj/structure/closet/firecloset, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -70382,20 +70828,6 @@ /area/maintenance/aft{ name = "Aft Maintenance" }) -"crw" = ( -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 2 - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "whiteblue" - }, -/area/medical/reception) "crx" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -70706,6 +71138,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel{ tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; @@ -70718,7 +71151,6 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, @@ -70789,7 +71221,7 @@ name = "containment blast door"; opacity = 0 }, -/turf/simulated/floor/plating, +/turf/simulated/floor/engine, /area/toxins/xenobiology{ name = "\improper Secure Lab" }) @@ -70813,7 +71245,7 @@ name = "containment blast door"; opacity = 0 }, -/turf/simulated/floor/plasteel, +/turf/simulated/floor/engine, /area/toxins/xenobiology{ name = "\improper Secure Lab" }) @@ -70835,7 +71267,7 @@ name = "containment blast door"; opacity = 0 }, -/turf/simulated/floor/plasteel, +/turf/simulated/floor/engine, /area/toxins/xenobiology{ name = "\improper Secure Lab" }) @@ -70924,7 +71356,7 @@ name = "containment blast door"; opacity = 0 }, -/turf/simulated/floor/plating, +/turf/simulated/floor/engine, /area/toxins/xenobiology{ name = "\improper Secure Lab" }) @@ -71048,7 +71480,7 @@ name = "containment blast door"; opacity = 0 }, -/turf/simulated/floor/plating, +/turf/simulated/floor/engine, /area/toxins/xenobiology{ name = "\improper Secure Lab" }) @@ -71068,7 +71500,7 @@ name = "containment blast door"; opacity = 0 }, -/turf/simulated/floor/plating, +/turf/simulated/floor/engine, /area/toxins/xenobiology{ name = "\improper Secure Lab" }) @@ -71104,7 +71536,7 @@ name = "containment blast door"; opacity = 0 }, -/turf/simulated/floor/plating, +/turf/simulated/floor/engine, /area/toxins/xenobiology{ name = "\improper Secure Lab" }) @@ -71142,7 +71574,7 @@ name = "containment blast door"; opacity = 0 }, -/turf/simulated/floor/plasteel, +/turf/simulated/floor/engine, /area/toxins/xenobiology{ name = "\improper Secure Lab" }) @@ -71225,7 +71657,7 @@ name = "containment blast door"; opacity = 0 }, -/turf/simulated/floor/plasteel, +/turf/simulated/floor/engine, /area/toxins/xenobiology{ name = "\improper Secure Lab" }) @@ -71243,7 +71675,7 @@ name = "containment blast door"; opacity = 0 }, -/turf/simulated/floor/plating, +/turf/simulated/floor/engine, /area/toxins/xenobiology{ name = "\improper Secure Lab" }) @@ -71261,7 +71693,7 @@ name = "containment blast door"; opacity = 0 }, -/turf/simulated/floor/plating, +/turf/simulated/floor/engine, /area/toxins/xenobiology{ name = "\improper Secure Lab" }) @@ -71344,29 +71776,6 @@ icon_state = "white" }, /area/medical/reception) -"csR" = ( -/obj/effect/spawner/window/reinforced, -/obj/structure/cable/yellow, -/obj/structure/cable/yellow{ - d2 = 8; - icon_state = "0-8" - }, -/obj/structure/cable/yellow{ - d2 = 4; - icon_state = "0-4" - }, -/obj/machinery/atmospherics/pipe/simple/visible, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; - id_tag = "Xenolab"; - name = "test chamber blast door"; - opacity = 0 - }, -/turf/simulated/floor/plating, -/area/toxins/xenobiology{ - name = "\improper Secure Lab" - }) "csS" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -71523,6 +71932,7 @@ req_one_access_txt = "47" }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel{ tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; @@ -71531,23 +71941,6 @@ /area/medical/research{ name = "Research Division" }) -"ctd" = ( -/obj/effect/spawner/window/reinforced, -/obj/structure/cable/yellow{ - d2 = 4; - icon_state = "0-4" - }, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; - id_tag = "Xenolab"; - name = "test chamber blast door"; - opacity = 0 - }, -/turf/simulated/floor/plating, -/area/toxins/xenobiology{ - name = "\improper Secure Lab" - }) "cte" = ( /turf/simulated/wall, /area/toxins/explab) @@ -71579,23 +71972,6 @@ icon_state = "white" }, /area/medical/reception) -"cth" = ( -/obj/machinery/shower{ - tag = "icon-shower (WEST)"; - icon_state = "shower"; - dir = 8 - }, -/obj/item/radio/intercom{ - dir = 8; - name = "Station Intercom (General)"; - pixel_y = -28 - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/medical/research{ - name = "Research Division" - }) "cti" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -71627,28 +72003,6 @@ /area/maintenance/aft{ name = "Aft Maintenance" }) -"ctk" = ( -/obj/effect/spawner/window/reinforced, -/obj/structure/cable/yellow{ - d2 = 8; - icon_state = "0-8" - }, -/obj/structure/cable/yellow{ - d2 = 4; - icon_state = "0-4" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; - id_tag = "Xenolab"; - name = "test chamber blast door"; - opacity = 0 - }, -/turf/simulated/floor/plating, -/area/toxins/xenobiology{ - name = "\improper Secure Lab" - }) "ctl" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -71793,25 +72147,6 @@ /area/maintenance/aft{ name = "Aft Maintenance" }) -"ctA" = ( -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 2; - initialize_directions = 11 - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/medical/reception) "ctB" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -71825,40 +72160,6 @@ icon_state = "white" }, /area/medical/reception) -"ctC" = ( -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/medical/reception) -"ctD" = ( -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/effect/landmark/start{ - name = "Medical Doctor" - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/medical/reception) "ctE" = ( /obj/machinery/portable_atmospherics/canister/air, /obj/machinery/atmospherics/unary/portables_connector{ @@ -71868,38 +72169,6 @@ /area/medical/research{ name = "Research Division" }) -"ctF" = ( -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ - dir = 2; - initialize_directions = 11 - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/medical/reception) -"ctG" = ( -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/turf/simulated/floor/plasteel{ - icon_state = "white" - }, -/area/medical/reception) "ctH" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -71974,28 +72243,6 @@ icon_state = "whiteblue" }, /area/medical/reception) -"ctN" = ( -/obj/machinery/door/window/southleft{ - dir = 2; - name = "Maximum Security Test Chamber"; - req_access_txt = "55" - }, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; - id_tag = "Xenolab"; - name = "test chamber blast door"; - opacity = 0 - }, -/turf/simulated/floor/plasteel, -/area/toxins/xenobiology{ - name = "\improper Secure Lab" - }) "ctO" = ( /obj/structure/table, /obj/machinery/door/window/eastright{ @@ -72062,23 +72309,6 @@ icon_state = "white" }, /area/medical/surgery1) -"ctU" = ( -/obj/effect/spawner/window/reinforced, -/obj/structure/cable/yellow{ - d2 = 8; - icon_state = "0-8" - }, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; - id_tag = "Xenolab"; - name = "test chamber blast door"; - opacity = 0 - }, -/turf/simulated/floor/plating, -/area/toxins/xenobiology{ - name = "\improper Secure Lab" - }) "ctV" = ( /obj/machinery/optable, /obj/machinery/atmospherics/unary/vent_pump{ @@ -72372,6 +72602,7 @@ "cuu" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "whitepurple" @@ -72380,7 +72611,6 @@ name = "Research Division" }) "cuv" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/plasteel{ dir = 1; icon_state = "whitepurplecorner" @@ -73148,10 +73378,10 @@ icon_state = "pipe-j1"; tag = "icon-pipe-j1 (EAST)" }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ + dir = 2 + }, /turf/simulated/floor/plasteel{ icon_state = "white" }, @@ -73167,8 +73397,9 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 2 +/obj/machinery/atmospherics/pipe/simple/hidden/supply{ + dir = 4; + level = 1 }, /turf/simulated/floor/plasteel{ icon_state = "white" @@ -73288,20 +73519,6 @@ icon_state = "whiteblue" }, /area/medical/reception) -"cvN" = ( -/obj/structure/table, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 5; - level = 1 - }, -/obj/machinery/recharger{ - pixel_y = 4 - }, -/turf/simulated/floor/plasteel{ - dir = 10; - icon_state = "whiteblue" - }, -/area/medical/reception) "cvO" = ( /obj/structure/table, /obj/item/radio/intercom/department/medbay{ @@ -75177,35 +75394,6 @@ /area/maintenance/aft{ name = "Aft Maintenance" }) -"cza" = ( -/obj/item/folder/white, -/obj/item/stamp/rd{ - pixel_x = 3; - pixel_y = -2 - }, -/obj/structure/table/reinforced, -/turf/simulated/floor/plasteel{ - tag = "icon-cafeteria (NORTHEAST)"; - icon_state = "cafeteria"; - dir = 5 - }, -/area/crew_quarters/hor) -"czb" = ( -/obj/structure/filingcabinet/filingcabinet, -/obj/machinery/light_switch{ - pixel_x = -25; - pixel_y = -5 - }, -/obj/machinery/status_display{ - density = 0; - layer = 4; - pixel_y = 32 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "barber" - }, -/area/medical/cmo) "czc" = ( /obj/machinery/computer/aifixer, /obj/machinery/requests_console{ @@ -76845,13 +77033,6 @@ /obj/effect/decal/cleanable/fungus, /turf/simulated/floor/plating, /area/maintenance/starboard) -"cBH" = ( -/obj/structure/closet/wardrobe/atmospherics_yellow, -/obj/item/flashlight, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/atmos) "cBI" = ( /obj/machinery/portable_atmospherics/scrubber/huge, /obj/machinery/light_switch{ @@ -77103,44 +77284,6 @@ icon_state = "whitebluefull" }, /area/medical/medbay3) -"cCb" = ( -/obj/structure/table/glass, -/obj/item/folder/blue, -/obj/item/pen{ - pixel_x = -3; - pixel_y = 5 - }, -/obj/structure/extinguisher_cabinet{ - pixel_x = 6; - pixel_y = -30 - }, -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_x = -30 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "barber" - }, -/area/medical/cmo) -"cCc" = ( -/obj/structure/table/glass, -/obj/machinery/requests_console{ - announcementConsole = 1; - department = "Chief Medical Officer's Desk"; - departmentType = 5; - name = "Chief Medical Officer RC"; - pixel_y = -32 - }, -/obj/item/paper_bin{ - pixel_x = -2; - pixel_y = 5 - }, -/obj/item/pen, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "barber" - }, -/area/medical/cmo) "cCd" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -77503,24 +77646,6 @@ icon_state = "barber" }, /area/medical/cmo) -"cCG" = ( -/obj/structure/table/glass, -/obj/machinery/computer/med_data/laptop, -/obj/machinery/door_control{ - id = "cmoprivacy"; - name = "Privacy Shutters Control"; - pixel_x = -26; - pixel_y = 4 - }, -/obj/machinery/keycard_auth{ - pixel_x = -26; - pixel_y = -7 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "barber" - }, -/area/medical/cmo) "cCH" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/power/apc{ @@ -77659,13 +77784,6 @@ /area/toxins/misc_lab{ name = "\improper Research Testing Range" }) -"cCS" = ( -/obj/structure/table/glass, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "barber" - }, -/area/medical/cmo) "cCT" = ( /obj/machinery/portable_atmospherics/canister/sleeping_agent, /obj/structure/extinguisher_cabinet{ @@ -78022,21 +78140,6 @@ icon_state = "whiteblue" }, /area/medical/medbay3) -"cDy" = ( -/obj/structure/rack, -/obj/item/clothing/shoes/magboots, -/obj/item/clothing/suit/space/hardsuit/medical, -/obj/item/clothing/mask/breath, -/obj/item/radio/intercom{ - dir = 1; - name = "Station Intercom (General)"; - pixel_y = -29 - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "barber" - }, -/area/medical/cmo) "cDz" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -78277,18 +78380,6 @@ /area/medical/medbay3{ name = "Medbay Aft" }) -"cDV" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/camera{ - c_tag = "Chemistry"; - dir = 4; - network = list("SS13","Medbay") - }, -/turf/simulated/floor/plasteel{ - dir = 8; - icon_state = "whiteblue" - }, -/area/medical/medbay3) "cDW" = ( /obj/effect/spawner/window/reinforced, /obj/machinery/door/firedoor, @@ -78395,31 +78486,6 @@ icon_state = "dark" }, /area/medical/genetics) -"cEf" = ( -/obj/item/paper_bin{ - pixel_x = 1; - pixel_y = 9 - }, -/obj/item/pen{ - pixel_x = -3; - pixel_y = 5 - }, -/obj/structure/table/reinforced, -/obj/item/cartridge/signal/toxins{ - pixel_x = 4; - pixel_y = 6 - }, -/obj/item/cartridge/signal/toxins{ - pixel_x = 4; - pixel_y = 6 - }, -/obj/item/paper/monitorkey, -/turf/simulated/floor/plasteel{ - tag = "icon-cafeteria (NORTHEAST)"; - icon_state = "cafeteria"; - dir = 5 - }, -/area/crew_quarters/hor) "cEg" = ( /obj/structure/cable/yellow{ d1 = 4; @@ -79265,18 +79331,6 @@ }) "cFH" = ( /turf/simulated/wall, -/area/toxins/mixing{ - name = "\improper Toxins Lab" - }) -"cFI" = ( -/obj/machinery/suit_storage_unit/standard_unit, -/obj/machinery/camera{ - c_tag = "Toxins - Launch Area"; - dir = 2; - network = list("SS13","RD") - }, -/obj/effect/decal/warning_stripes/yellow/hollow, -/turf/simulated/floor/plasteel, /area/toxins/mixing{ name = "\improper Toxins Lab" }) @@ -81000,12 +81054,6 @@ icon_state = "white" }, /area/medical/surgery2) -"cIs" = ( -/obj/machinery/vending/cigarette, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/hallway/primary/aft) "cIt" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/item/radio/intercom{ @@ -81429,12 +81477,6 @@ /area/toxins/mixing{ name = "\improper Toxins Lab" }) -"cJg" = ( -/obj/machinery/vending/cola, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/hallway/primary/aft) "cJh" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ dir = 8 @@ -81833,31 +81875,6 @@ /area/maintenance/aft{ name = "Aft Maintenance" }) -"cJS" = ( -/obj/item/storage/box/rxglasses{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/storage/box/bodybags, -/obj/item/pen{ - pixel_x = -3; - pixel_y = 5 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/table/glass, -/obj/machinery/door_control{ - desc = "A remote control switch for the cloning door."; - id = "CloningDoor"; - name = "Cloning Exit Button"; - normaldoorcontrol = 1; - pixel_x = -23; - pixel_y = 8 - }, -/turf/simulated/floor/plasteel{ - tag = "icon-vault"; - icon_state = "vault" - }, -/area/medical/genetics_cloning) "cJT" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -81988,29 +82005,6 @@ icon_state = "whiteblue" }, /area/medical/medbay3) -"cKg" = ( -/obj/structure/table, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/machinery/requests_console{ - department = "Morgue"; - departmentType = 5; - name = "Morgue Requests Console"; - pixel_y = 30 - }, -/obj/item/storage/box/bodybags{ - pixel_x = 5; - pixel_y = 5 - }, -/obj/item/storage/box/bodybags, -/obj/machinery/light/small{ - dir = 1 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/medical/morgue) "cKh" = ( /obj/structure/table, /obj/item/radio/intercom{ @@ -82571,19 +82565,6 @@ icon_state = "white" }, /area/medical/patient_b) -"cLf" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/centcom{ - name = "Morgue"; - opacity = 1; - req_access_txt = "6" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/medical/genetics_cloning) "cLg" = ( /obj/machinery/alarm{ dir = 4; @@ -83154,30 +83135,6 @@ /area/toxins/mixing{ name = "\improper Toxins Lab" }) -"cMa" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/door/poddoor{ - density = 0; - icon_state = "open"; - id_tag = "Biohazard_medi"; - name = "Quarantine Lockdown"; - opacity = 0 - }, -/obj/machinery/door/airlock/maintenance{ - name = "Surgery Maintenance"; - req_access_txt = "45" - }, -/obj/structure/cable{ - d1 = 1; - d2 = 2; - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/turf/simulated/floor/plating, -/area/medical/medbay3) "cMb" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/item/radio/intercom{ @@ -83229,29 +83186,6 @@ icon_state = "dark" }, /area/medical/morgue) -"cMe" = ( -/obj/structure/filingcabinet/chestdrawer/autopsy, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/medical/morgue) -"cMf" = ( -/obj/machinery/camera{ - c_tag = "Morgue"; - dir = 2; - network = list("SS13","Medbay") - }, -/obj/structure/morgue, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/medical/morgue) -"cMg" = ( -/obj/structure/closet, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/hallway/primary/aft) "cMh" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ req_access_txt = 1 @@ -83450,37 +83384,6 @@ /area/toxins/mixing{ name = "\improper Toxins Lab" }) -"cMv" = ( -/obj/machinery/power/apc{ - dir = 4; - name = "Morgue APC"; - pixel_x = 26 - }, -/obj/structure/cable/yellow{ - d2 = 8; - icon_state = "0-8" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/medical/morgue) -"cMw" = ( -/obj/machinery/firealarm{ - dir = 2; - pixel_y = 24 - }, -/obj/machinery/light/small{ - dir = 1 - }, -/obj/structure/morgue{ - tag = "icon-morgue1 (WEST)"; - icon_state = "morgue1"; - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/medical/morgue) "cMx" = ( /obj/structure/closet/crate, /obj/item/clothing/mask/gas, @@ -83691,14 +83594,6 @@ icon_state = "whitegreenfull" }, /area/medical/virology) -"cML" = ( -/obj/machinery/alarm{ - pixel_y = 32 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/medical/morgue) "cMM" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -83848,9 +83743,6 @@ icon_state = "whitegreenfull" }, /area/medical/virology) -"cMS" = ( -/turf/simulated/wall, -/area/hallway/primary/aft) "cMT" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -84270,18 +84162,6 @@ icon_state = "whitegreen" }, /area/medical/virology) -"cNE" = ( -/obj/machinery/disposal, -/obj/machinery/light_switch{ - pixel_x = 23 - }, -/obj/structure/disposalpipe/trunk{ - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/medical/morgue) "cNF" = ( /obj/structure/disposalpipe/segment{ dir = 8; @@ -84603,14 +84483,6 @@ /area/toxins/mixing{ name = "\improper Toxins Lab" }) -"cOd" = ( -/obj/structure/window/reinforced{ - dir = 1 - }, -/obj/structure/morgue, -/obj/effect/decal/warning_stripes/yellow/hollow, -/turf/simulated/floor/plasteel, -/area/assembly/robotics) "cOe" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/research{ @@ -85116,12 +84988,6 @@ icon_state = "escape" }, /area/hallway/primary/aft) -"cOQ" = ( -/obj/structure/sign/directions/evac{ - pixel_y = 0 - }, -/turf/simulated/wall/r_wall, -/area/hallway/primary/aft) "cOR" = ( /obj/structure/table, /obj/item/circular_saw, @@ -85190,19 +85056,6 @@ /obj/effect/decal/warning_stripes/yellow, /turf/simulated/floor/plasteel, /area/assembly/robotics) -"cOY" = ( -/obj/effect/landmark/start{ - name = "Coroner" - }, -/obj/structure/chair/office/dark{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/medical/morgue) "cOZ" = ( /turf/simulated/floor/plasteel{ dir = 8; @@ -85344,33 +85197,6 @@ /area/maintenance/aft{ name = "Aft Maintenance" }) -"cPk" = ( -/obj/machinery/photocopier, -/obj/item/radio/intercom{ - dir = 8; - name = "station intercom (General)"; - pixel_x = -28 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/medical/morgue) -"cPl" = ( -/obj/structure/table, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/item/paper_bin{ - pixel_y = -1 - }, -/obj/item/pen{ - pixel_x = -3; - pixel_y = 5 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/medical/morgue) "cPm" = ( /obj/machinery/atmospherics/unary/portables_connector{ dir = 8 @@ -85453,22 +85279,6 @@ icon_state = "whitegreenfull" }, /area/medical/virology) -"cPu" = ( -/obj/machinery/atmospherics/unary/vent_scrubber{ - dir = 4; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/obj/structure/morgue{ - tag = "icon-morgue1 (WEST)"; - icon_state = "morgue1"; - dir = 8 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/medical/morgue) "cPv" = ( /obj/item/radio/intercom{ frequency = 1459; @@ -85479,15 +85289,6 @@ icon_state = "dark" }, /area/medical/morgue) -"cPw" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 10 - }, -/obj/structure/morgue, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/medical/morgue) "cPx" = ( /obj/structure/disposalpipe/segment, /obj/machinery/atmospherics/pipe/manifold/hidden/supply{ @@ -86206,26 +86007,6 @@ icon_state = "dark" }, /area/medical/morgue) -"cQB" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/medical/morgue) -"cQC" = ( -/obj/structure/morgue, -/obj/machinery/atmospherics/unary/vent_scrubber{ - dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/medical/morgue) "cQD" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -87282,32 +87063,6 @@ }, /obj/effect/decal/warning_stripes/south, /turf/simulated/floor/plating, -/area/maintenance/aft{ - name = "Aft Maintenance" - }) -"cSm" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/obj/effect/spawner/lootdrop{ - loot = list(/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/structure/grille,/obj/item/cigbutt,/obj/item/trash/cheesie,/obj/item/trash/candy,/obj/item/trash/chips,/obj/item/trash/pistachios,/obj/item/trash/plate,/obj/item/trash/popcorn,/obj/item/trash/raisins,/obj/item/trash/sosjerky,/obj/item/trash/syndi_cakes); - name = "maint grille or trash spawner" - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply{ - dir = 2 - }, -/obj/structure/cable/yellow{ - d1 = 1; - d2 = 4; - icon_state = "1-4" - }, -/obj/effect/decal/warning_stripes/north, -/turf/simulated/floor/plating, /area/maintenance/aft{ name = "Aft Maintenance" }) @@ -87426,25 +87181,6 @@ icon_state = "whiteblue" }, /area/medical/medbay3) -"cSw" = ( -/obj/machinery/optable{ - name = "Robotics Operating Table" - }, -/obj/structure/extinguisher_cabinet{ - pixel_y = -30 - }, -/obj/machinery/camera{ - c_tag = "Robotics - Aft"; - dir = 1; - network = list("SS13","RD") - }, -/obj/item/tank/anesthetic, -/obj/item/clothing/mask/breath/medical, -/turf/simulated/floor/plasteel{ - dir = 1; - icon_state = "whitehall" - }, -/area/assembly/robotics) "cSx" = ( /obj/structure/table, /obj/item/mmi, @@ -87497,16 +87233,6 @@ icon_state = "dark" }, /area/medical/morgue) -"cSC" = ( -/obj/machinery/door/window/eastright{ - name = "Coroner Office"; - req_access_txt = "5" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/medical/morgue) "cSD" = ( /obj/machinery/atmospherics/unary/tank/air{ dir = 1 @@ -87601,16 +87327,6 @@ icon_state = "grimy" }, /area/chapel/office) -"cSM" = ( -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/medical/morgue) "cSN" = ( /obj/machinery/alarm{ dir = 4; @@ -87935,17 +87651,6 @@ /area/toxins/xenobiology{ name = "\improper Secure Lab" }) -"cTn" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/cable/yellow{ - d1 = 4; - d2 = 8; - icon_state = "4-8" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/medical/morgue) "cTo" = ( /obj/structure/closet/crate, /obj/item/poster/random_official, @@ -88944,27 +88649,6 @@ icon_state = "dark" }, /area/chapel/office) -"cUU" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/centcom{ - name = "Morgue"; - opacity = 1; - req_access_txt = "6" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4; - level = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/medical/morgue) "cUV" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -88981,19 +88665,6 @@ icon_state = "whiteblue" }, /area/medical/medbay3) -"cUW" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/obj/machinery/atmospherics/pipe/manifold/hidden/supply, -/obj/effect/landmark/start{ - name = "Coroner" - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/medical/morgue) "cUX" = ( /turf/simulated/floor/plasteel{ icon_state = "dark" @@ -89219,18 +88890,6 @@ /area/hallway/secondary/exit{ name = "\improper Departure Lounge" }) -"cVt" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply{ - dir = 4; - level = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/medical/morgue) "cVu" = ( /obj/structure/disposalpipe/segment{ dir = 2; @@ -89329,18 +88988,6 @@ /area/hallway/secondary/exit{ name = "\improper Departure Lounge" }) -"cVE" = ( -/obj/machinery/atmospherics/unary/vent_pump{ - dir = 8; - external_pressure_bound = 101.325; - on = 1; - pressure_checks = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/medical/morgue) "cVF" = ( /obj/structure/sign/biohazard, /turf/simulated/wall/r_wall, @@ -89405,14 +89052,6 @@ /area/medical/research{ name = "Research Division" }) -"cVK" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/hallway/primary/aft) "cVL" = ( /obj/structure/closet/coffin, /obj/machinery/light/small{ @@ -89658,20 +89297,6 @@ /area/construction/hallway{ name = "\improper MiniSat Exterior" }) -"cWk" = ( -/obj/machinery/door/firedoor, -/obj/machinery/door/airlock/centcom{ - name = "Morgue"; - opacity = 1; - req_access_txt = "6" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/medical/morgue) "cWl" = ( /obj/structure/cable/yellow{ d1 = 1; @@ -90254,13 +89879,6 @@ icon_state = "dark" }, /area/chapel/main) -"cXl" = ( -/obj/machinery/iv_drip, -/turf/simulated/floor/plasteel{ - dir = 2; - icon_state = "whiteblue" - }, -/area/medical/medbay3) "cXm" = ( /obj/item/flashlight/lantern{ pixel_y = 7 @@ -90430,16 +90048,6 @@ /area/maintenance/aft{ name = "Aft Maintenance" }) -"cXy" = ( -/obj/structure/closet/crate/freezer, -/obj/item/reagent_containers/iv_bag, -/obj/item/reagent_containers/iv_bag, -/obj/item/reagent_containers/iv_bag, -/turf/simulated/floor/plasteel{ - dir = 2; - icon_state = "whiteblue" - }, -/area/medical/medbay3) "cXz" = ( /obj/machinery/smartfridge/secure/extract, /turf/simulated/floor/plasteel{ @@ -90901,26 +90509,6 @@ /area/maintenance/aft{ name = "Aft Maintenance" }) -"cYn" = ( -/obj/machinery/optable, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/medical/morgue) -"cYo" = ( -/obj/structure/table, -/obj/item/storage/box/gloves{ - pixel_y = 8 - }, -/obj/item/camera{ - name = "Autopsy Camera"; - pixel_x = -2; - pixel_y = -2 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/medical/morgue) "cYp" = ( /obj/machinery/atmospherics/unary/vent_pump{ dir = 4; @@ -91018,15 +90606,6 @@ /area/crew_quarters/fitness{ name = "\improper Recreation Area" }) -"cYy" = ( -/obj/machinery/light/small, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/medical/morgue) "cYz" = ( /obj/structure/cable/yellow{ d1 = 2; @@ -91180,19 +90759,6 @@ icon_state = "whitegreen" }, /area/medical/virology) -"cYN" = ( -/obj/structure/morgue{ - tag = "icon-morgue1 (WEST)"; - icon_state = "morgue1"; - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/medical/morgue) "cYO" = ( /turf/simulated/floor/plasteel{ dir = 1; @@ -91680,7 +91246,7 @@ dir = 4 }, /obj/structure/disposaloutlet, -/turf/simulated/floor/plasteel, +/turf/simulated/floor/engine, /area/toxins/xenobiology{ name = "\improper Secure Lab" }) @@ -91688,7 +91254,7 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/simulated/floor/plasteel, +/turf/simulated/floor/engine, /area/toxins/xenobiology{ name = "\improper Secure Lab" }) @@ -91768,11 +91334,6 @@ }, /turf/simulated/floor/wood, /area/medical/psych) -"cZP" = ( -/turf/simulated/floor/plasteel, -/area/toxins/xenobiology{ - name = "\improper Secure Lab" - }) "cZQ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel{ @@ -92117,7 +91678,7 @@ /obj/structure/disposaloutlet{ dir = 1 }, -/turf/simulated/floor/plasteel, +/turf/simulated/floor/engine, /area/toxins/xenobiology{ name = "\improper Secure Lab" }) @@ -92841,7 +92402,7 @@ dir = 2; icon_state = "pipe-c" }, -/turf/simulated/floor/plasteel, +/turf/simulated/floor/engine, /area/toxins/xenobiology{ name = "\improper Secure Lab" }) @@ -92994,7 +92555,7 @@ /area/chapel/main) "dbM" = ( /obj/structure/disposalpipe/segment, -/turf/simulated/floor/plasteel, +/turf/simulated/floor/engine, /area/toxins/xenobiology{ name = "\improper Secure Lab" }) @@ -93179,7 +92740,7 @@ dir = 1; icon_state = "pipe-c" }, -/turf/simulated/floor/plasteel, +/turf/simulated/floor/engine, /area/toxins/xenobiology{ name = "\improper Secure Lab" }) @@ -93621,15 +93182,6 @@ "dcH" = ( /obj/structure/disposalpipe/segment, /turf/simulated/floor/plating, -/area/toxins/xenobiology{ - name = "\improper Secure Lab" - }) -"dcI" = ( -/obj/machinery/shieldwallgen{ - req_access = list(55) - }, -/obj/structure/cable/yellow, -/turf/simulated/floor/plating, /area/toxins/xenobiology{ name = "\improper Secure Lab" }) @@ -93650,17 +93202,6 @@ /obj/effect/decal/warning_stripes/west, /turf/simulated/floor/plasteel, /area/medical/cryo) -"dcL" = ( -/obj/machinery/atmospherics/unary/vent_scrubber{ - dir = 2; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/medical/morgue) "dcM" = ( /obj/structure/table, /obj/machinery/recharger{ @@ -93773,20 +93314,6 @@ name = "HIGH VOLTAGE" }, /turf/simulated/wall/r_wall, -/area/toxins/xenobiology{ - name = "\improper Secure Lab" - }) -"dcY" = ( -/obj/machinery/atmospherics/pipe/simple/visible, -/turf/simulated/floor/plasteel, -/area/toxins/xenobiology{ - name = "\improper Secure Lab" - }) -"dcZ" = ( -/obj/structure/disposaloutlet{ - dir = 2 - }, -/turf/simulated/floor/plasteel, /area/toxins/xenobiology{ name = "\improper Secure Lab" }) @@ -93835,16 +93362,6 @@ icon_state = "floorgrime" }, /area/shuttle/escape) -"ddh" = ( -/obj/structure/table, -/obj/item/stack/sheet/metal{ - amount = 10 - }, -/obj/item/radio/electropack, -/turf/simulated/floor/plasteel, -/area/toxins/xenobiology{ - name = "\improper Secure Lab" - }) "ddi" = ( /obj/structure/chair/comfy/shuttle{ dir = 4 @@ -93903,44 +93420,6 @@ icon_state = "floorgrime" }, /area/shuttle/escape) -"ddr" = ( -/obj/machinery/sparker{ - id = "Xenobio"; - pixel_x = -25 - }, -/turf/simulated/floor/plasteel, -/area/toxins/xenobiology{ - name = "\improper Secure Lab" - }) -"dds" = ( -/obj/machinery/atmospherics/unary/outlet_injector/on{ - dir = 1 - }, -/turf/simulated/floor/plasteel, -/area/toxins/xenobiology{ - name = "\improper Secure Lab" - }) -"ddt" = ( -/obj/item/radio/beacon, -/turf/simulated/floor/plasteel, -/area/toxins/xenobiology{ - name = "\improper Secure Lab" - }) -"ddu" = ( -/obj/structure/table, -/obj/machinery/cell_charger{ - pixel_y = 5 - }, -/obj/item/stack/cable_coil, -/obj/item/multitool, -/obj/item/stock_parts/cell/high{ - charge = 100; - maxcharge = 15000 - }, -/turf/simulated/floor/plasteel, -/area/toxins/xenobiology{ - name = "\improper Secure Lab" - }) "ddv" = ( /obj/docking_port/stationary{ dir = 2; @@ -93975,55 +93454,6 @@ dir = 2 }, /area/shuttle/escape) -"ddz" = ( -/obj/effect/decal/remains/xeno, -/turf/simulated/floor/plasteel, -/area/toxins/xenobiology{ - name = "\improper Secure Lab" - }) -"ddA" = ( -/obj/machinery/light{ - dir = 2 - }, -/obj/machinery/camera{ - c_tag = "Secure Lab - Test Chamber"; - dir = 1; - network = list("SS13","RD") - }, -/turf/simulated/floor/plasteel, -/area/toxins/xenobiology{ - name = "\improper Secure Lab" - }) -"ddB" = ( -/obj/item/radio/intercom{ - pixel_y = -25 - }, -/turf/simulated/floor/plasteel, -/area/toxins/xenobiology{ - name = "\improper Secure Lab" - }) -"ddC" = ( -/obj/structure/table, -/obj/item/assembly/igniter{ - pixel_x = -5; - pixel_y = 3 - }, -/obj/item/assembly/igniter{ - pixel_x = 5; - pixel_y = -4 - }, -/obj/item/assembly/igniter{ - pixel_x = 2; - pixel_y = 6 - }, -/obj/item/assembly/igniter{ - pixel_x = 2; - pixel_y = -1 - }, -/turf/simulated/floor/plasteel, -/area/toxins/xenobiology{ - name = "\improper Secure Lab" - }) "ddD" = ( /obj/structure/cable{ icon_state = "0-2"; @@ -94308,14 +93738,6 @@ icon_state = "barber" }, /area/civilian/barber) -"dee" = ( -/obj/structure/table, -/obj/machinery/computer/med_data/laptop, -/obj/machinery/atmospherics/unary/vent_pump, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/medical/morgue) "def" = ( /obj/structure/sign/redcross{ desc = "The Star of Life, a symbol of Medical Aid."; @@ -95198,14 +94620,6 @@ icon_state = "floorgrime" }, /area/shuttle/escape) -"dfF" = ( -/obj/structure/window/reinforced{ - dir = 4 - }, -/turf/simulated/floor/plasteel{ - icon_state = "dark" - }, -/area/medical/morgue) "dfG" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/plasteel{ @@ -95276,19 +94690,6 @@ dir = 5 }, /area/engine/mechanic_workshop) -"dfL" = ( -/obj/machinery/atmospherics/unary/vent_scrubber{ - dir = 1; - on = 1; - scrub_N2O = 0; - scrub_Toxins = 0 - }, -/obj/machinery/alarm{ - dir = 1; - pixel_y = -22 - }, -/turf/simulated/floor/engine, -/area/engine/mechanic_workshop) "dfM" = ( /obj/structure/reagent_dispensers/watertank, /turf/simulated/shuttle/plating{ @@ -95833,10 +95234,6 @@ }, /turf/simulated/floor/plating, /area/maintenance/starboard) -"dgF" = ( -/obj/structure/reagent_dispensers/oil, -/turf/simulated/floor/plasteel, -/area/assembly/robotics) "dgG" = ( /obj/structure/rack, /obj/item/stack/sheet/cardboard, @@ -95954,22 +95351,6 @@ /area/toxins/server{ name = "\improper Research Division Server Room" }) -"dgV" = ( -/obj/structure/rack, -/obj/item/tank/emergency_oxygen/double, -/obj/item/tank/jetpack/oxygen/captain, -/obj/item/clothing/suit/space/captain, -/obj/item/clothing/mask/gas, -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 2 - }, -/obj/item/crowbar/red, -/obj/item/clothing/head/helmet/space/capspace, -/turf/simulated/floor/wood, -/area/crew_quarters/captain{ - name = "\improper Captain's Quarters" - }) "dgW" = ( /obj/machinery/computer/camera_advanced/xenobio, /turf/simulated/floor/plasteel{ @@ -96161,13 +95542,6 @@ }, /obj/effect/decal/cleanable/dirt, /turf/simulated/floor/plating, -/area/maintenance/aft{ - name = "Aft Maintenance" - }) -"dhs" = ( -/obj/item/cigbutt, -/obj/effect/decal/cleanable/dirt, -/turf/simulated/floor/plating, /area/maintenance/aft{ name = "Aft Maintenance" }) @@ -96472,6 +95846,12 @@ }, /turf/space, /area/space/nearstation) +"kNJ" = ( +/turf/simulated/floor/plasteel{ + dir = 1; + icon_state = "whiteblue" + }, +/area/medical/paramedic) "kSC" = ( /obj/machinery/atmospherics/unary/portables_connector{ dir = 4 @@ -96537,6 +95917,12 @@ /obj/effect/spawner/airlock/s_to_n, /turf/simulated/wall, /area/maintenance/starboard) +"ptc" = ( +/turf/simulated/floor/plasteel{ + dir = 2; + icon_state = "whiteblue" + }, +/area/medical/paramedic) "pMx" = ( /obj/effect/spawner/airlock/w_to_e, /turf/simulated/wall, @@ -96676,10 +96062,6 @@ /area/construction/hallway{ name = "\improper MiniSat Exterior" }) -"sJs" = ( -/obj/effect/spawner/window/reinforced, -/turf/space, -/area/engine/engineering) "sRB" = ( /obj/machinery/atmospherics/pipe/simple/visible{ dir = 10 @@ -96716,6 +96098,22 @@ }, /turf/simulated/shuttle/floor4/vox, /area/shuttle/vox) +"umT" = ( +/obj/structure/closet/crate/freezer, +/obj/item/reagent_containers/iv_bag, +/obj/item/reagent_containers/iv_bag, +/obj/item/reagent_containers/iv_bag, +/obj/machinery/light{ + dir = 1; + on = 1 + }, +/turf/simulated/floor/plasteel{ + dir = 5; + icon_state = "whiteblue" + }, +/area/medical/medbay2{ + name = "Medbay Storage" + }) "uJn" = ( /obj/effect/spawner/airlock/w_to_e, /turf/simulated/wall/r_wall, @@ -96751,6 +96149,16 @@ /obj/structure/cable, /turf/simulated/floor/plating, /area/maintenance/starboardsolar) +"wyX" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/plasteel{ + tag = "icon-cafeteria (NORTHEAST)"; + icon_state = "cafeteria"; + dir = 5 + }, +/area/medical/research{ + name = "Research Division" + }) "wJQ" = ( /obj/effect/decal/warning_stripes/north, /obj/machinery/atmospherics/pipe/simple/visible{ @@ -105886,7 +105294,7 @@ aaa aSq aTN aTN -bkj +aWG ayC aWD aUN @@ -105908,9 +105316,9 @@ aUN aUN aUN aaa -bGW +bls bKr -bMv +blw aaa aUN aUN @@ -106164,11 +105572,11 @@ aUN bBr bcy aUN -bGW +bls bIG bKs bMw -bMv +blw aUN bRz bcy @@ -106400,7 +105808,7 @@ aaa aSs aTN aTN -bly +aZz aYg aZj baJ @@ -111551,7 +110959,7 @@ bgX bix bkn cfg -blk +bjP brV brz bto @@ -112065,7 +111473,7 @@ bgX bmS bkp bmb -blk +bjP but brB bto @@ -113122,7 +112530,7 @@ cdJ ceO bZU chq -clQ +bxt bZU cmY bZU @@ -116424,11 +115832,11 @@ aLK aTW aVl aVl -aYn -aYn -baY -bcz -aYn +bfw +bfw +bcD +bbc +bfw bfw bkK biL @@ -116681,11 +116089,11 @@ aSI aTX aXt aWO -aYn +bfw +aUe +baY bbP -baZ -bcA -aYn +bfw bjf bhg biM @@ -116938,11 +116346,11 @@ aWh aTY aVn aWP -aYn -aZy -bba -ceS -aYn +bfw +aWj +baZ +bbT +bfw ceX bhh biN @@ -117195,11 +116603,11 @@ aSK aTZ aVo aWQ +bfw aYn -aZz -bbb -bgD -aYn +bba +bcz +bfw bfw bhi baz @@ -117245,10 +116653,10 @@ cmX cwk cxs csJ -czb +cbJ cBs -cCG -cCb +cmv +bQV csJ cFf cHd @@ -117257,7 +116665,7 @@ cIA cFd cLK cNM -cMa +bSD cLz cTF chy @@ -117452,11 +116860,11 @@ bZa aWt aXB aWR -aYn -bbT -bbc -bcD -aWj +bfw +aZy +bbb +bcA +bfw bjJ bkS blu @@ -117505,7 +116913,7 @@ cys czw cBr cCF -cDy +cpF csJ cDr cHc @@ -117761,8 +117169,8 @@ cxu csJ czg cBu -cCS -cCc +cnS +cpG csJ cFh cHg @@ -118775,7 +118183,7 @@ ccD cdT chU cgf -chL +cgJ cjt cjt cLT @@ -118790,7 +118198,7 @@ cxL czE cNG czE -cDV +cpH cCH cFP cHl @@ -119031,11 +118439,11 @@ bzP ccE cdT cfz -cgf -ckK -clZ -cna -com +cdq +chL +cik +cil +cjA cpD crj csQ @@ -119248,7 +118656,7 @@ avx aPZ aRw aSP -aUe +atJ bmK aWU aYs @@ -119288,10 +118696,10 @@ cby ccF cdT cff -cjw +cdU ckL ciT -ckI +cim cop cdT crm @@ -119545,12 +118953,12 @@ cbz ccG chM chM +cel chM chM -chM -chM -coo -coo +cdT +cdT +cdT coR ctg cnn @@ -119573,7 +118981,7 @@ cKZ cKZ cRE cUp -cXl +cXw dfO cZO cYC @@ -119771,7 +119179,7 @@ aOF bcL bek bfK -blh +bhq bhq bhq bhq @@ -119801,14 +119209,14 @@ cai bek ccI chM -chW -cjy -ckN -cmc +bTe +ceL +cfF chM -clI -cpG -cro +ciX +cjD +cdT +cjS ctB crP cvj @@ -119830,7 +119238,7 @@ cLb cKZ cwj cUp -cXl +ckQ cRU cOU daU @@ -120024,7 +119432,7 @@ aUg aUg aYv aZH -bdV +asL bcM bel bfK @@ -120058,15 +119466,15 @@ caL bek cdl chN +bUq +ceS chV -cjx -ckM -cmb -cnb -coq -cpF -crn -ctA +chM +ciY +clZ +cjT +clL +cjY cnn cjQ cnp @@ -120087,7 +119495,7 @@ cKU cQb cRM cUr -cXw +clf cRU dei daQ @@ -120281,7 +119689,7 @@ aRR aWW aYw bcd -bdV +axg bcN bem bfL @@ -120315,15 +119723,15 @@ caM bek cht chM -cfE +ccb cjz -ckO -cmd +cgr chM -cos -cpH -crt -ctD +cjw +cjO +ckG +ckK +ckN crW cmj cnq @@ -120511,7 +119919,7 @@ aoM apQ ari asq -atI +ajr azc amx auL @@ -120570,17 +119978,17 @@ bYR bZx caM bek -cdA -cdU -cdU -cdU -cdU -cdU -cdU -cdU -cdU -crp -ctC +ccG +ceq +kNJ +cjz +ptc +chM +cjx +cjP +ckI +clL +cjY cnn cjQ cwr @@ -120601,13 +120009,13 @@ cOL cQf cRM cUF -cXy +clg cRU dad daV dbN cRU -cSm +bTc bZU cSR cTK @@ -120816,7 +120224,7 @@ bHv bEx bJh bKQ -bNN +bxq bOS bRv bSi @@ -120827,18 +120235,18 @@ bYZ bZx caM bek -ccG -cdU -chZ -cgr -ckQ -cmf +cdA +chM +cca +cfx +chW +chM +ciY +clZ +cjT +clL cjY -clV -cpJ -crw -ctG -cnn +ckt cvj cui cpZ @@ -121002,7 +120410,7 @@ aaa acu acH acH -acY +abK adv adV aew @@ -121085,16 +120493,16 @@ bMS caD bek ccG -cdU -cfF -cjA -ckP -cme -cnc -cot -cpI -cru -ctF +chM +cck +cgI +chZ +chM +umT +cjR +cdT +ckM +ckO cnn cvj csX @@ -121114,7 +120522,7 @@ cIm cIm cIm cIm -cUU +bSY cIm cRU cRU @@ -121342,14 +120750,14 @@ bMS cam ben ccK -cdU -cdU -cjD -cjD -cdU -cnf -cnf -cdU +chM +chM +chM +chM +chM +cjy +cjy +cdT cpx ctI csx @@ -121364,15 +120772,15 @@ cBw cCN cGc cDZ -cJS +clh cGf cBv -cMe -cPk -dcL +bTa +clI +cmc cSB cVb -cYo +cnE cIm cNR cOM @@ -121516,7 +120924,7 @@ aaa acw acH acH -adg +acY djL adW abB @@ -121623,13 +121031,13 @@ cGb cIf cJh cKn -cLf +bRn cMd -cOY +clQ cMd cMd -cUW -cYn +cnc +cpJ cIm cmV bZU @@ -121881,12 +121289,12 @@ cIh cHs cGh cDg -cKg -cPl -dee -cSC +bRt +cIo +cIo +cmu cVm -dfF +col cIm cmV bZU @@ -122106,7 +121514,7 @@ bPo bRY bTj bVP -bWl +bPS bWE bZw bZA @@ -122138,9 +121546,9 @@ cIg cDg cDg cBv -cMf -cIn -cIn +bSE +clV +cmd cIo cVl cIn @@ -122319,7 +121727,7 @@ axK aNI aAd aBi -atJ +akD akD akD amx @@ -122381,7 +121789,7 @@ cpN crB ctM cuT -cvN +bHV coo cxH cyI @@ -122395,9 +121803,9 @@ dhy cHR cKo czC -cIo -cIo -cIo +cIn +cIn +cIn cSP cVu cYI @@ -122652,12 +122060,12 @@ dhx dhB cGj czC -cMw -cPu -cQA -cSM -cVt -cYy +bSX +bRr +cIo +cmw +cnf +com cIm cje bZU @@ -122909,12 +122317,12 @@ dhA dhD cGk czC -cIn -cPw -cQC -cTn -cVE -cYN +cQA +cmb +cme +cna +cnC +coq cIm cmY bZU @@ -123166,12 +122574,12 @@ dhz dhB cGl czC -cML -cPv -cQB -cMv -cVv -cNE +bTb +cIn +cIn +cmw +cnD +cos cIm cmY bZU @@ -123386,8 +122794,8 @@ bFL bkW bJp bKZ +bxo bNb -bOI bQo bSb bSa @@ -123423,12 +122831,12 @@ cDu cEh cIC czC -cIm -cIm -cIm -cIm -cWk -cIm +cIo +cPv +cmf +cnb +cVv +cot cIm cQi bZU @@ -123644,7 +123052,7 @@ bET bJn bLa bvl -bPs +bNf bQo bSa bSa @@ -123680,13 +123088,13 @@ cIl cbY czC czC -cMS -cIs -cJg -cMS -cVK -cMg -bZU +cIm +cIm +cIm +cIm +bSZ +cIm +cIm cNV czI bZU @@ -123901,7 +123309,7 @@ bGk bJn bLb bMZ -bPB +bOI bQp bSc bTL @@ -124716,7 +124124,7 @@ cIx cIx cIx cIx -cOQ +coG cIx cIx cRC @@ -124928,7 +124336,7 @@ bFR bkW bJs bLe -bNf +bxp bON bQt bSf @@ -124945,7 +124353,7 @@ cOm cgz cic cic -ckW +bXF cmo coH cqe @@ -124972,7 +124380,7 @@ cTw cIx cNQ cNf -cOd +bQa cOR cPQ cIx @@ -125149,7 +124557,7 @@ aBq aCL aDT aHN -aGz +apP aHQ aJn aKK @@ -125186,7 +124594,7 @@ bkW bJt bLf bCD -bPS +bPs bQs bSe bTN @@ -125231,7 +124639,7 @@ cOa cOa cQk cOS -cSw +cpR cIx cmY bZU @@ -125443,7 +124851,7 @@ bkW bMm bLg bNd -bQa +bPB bQu bSg bTO @@ -125771,8 +125179,8 @@ cVG cVG cVG cZG -cZP -cZP +bMu +bMu cVG cVG cVG @@ -125920,7 +125328,7 @@ aBt azz aDV aFo -azz +anx aHT aJq aOi @@ -125998,7 +125406,7 @@ cIx cJn cMj cLo -dgF +cLo cLo cQv cOX @@ -126020,16 +125428,16 @@ cnU cYK cZr cZG -cZP +bMu aOE cZr cZG -cZP +bMu aOE cZr cZH -cZP -cZP +bMu +bMu cVG dcs cVG @@ -126277,16 +125685,16 @@ cYp cnW cZr cZH -cZP -cZP +bMu +bMu cZr cZH -cZP -cZP +bMu +bMu cZr cZH -cZP -cZP +bMu +bMu cVG dct dcH @@ -126534,12 +125942,12 @@ cYq dcq cZr cZH -cZP -cZP +bMu +bMu cZr cZH -cZP -cZP +bMu +bMu cZr csB csF @@ -126743,7 +126151,7 @@ cei cOm cgG cii -cjO +bUy cld cks cmR @@ -126803,11 +126211,11 @@ dcx dcz dcB ddS -dcI +bGU cVG -cZP -ddr -ddz +bMu +bNH +bPk cVG ddK cVG @@ -126999,13 +126407,13 @@ ccR bZu cfw cgu -cii -cjP +bUx +bUz clc clm cnA -cqm -cql +bVj +bVC cti csZ cum @@ -127060,11 +126468,11 @@ dab dbS dcj dgB -ctd +bGW dcX -cZP -cZP -cZP +bMu +bMu +bMu cVG ddK cVG @@ -127254,16 +126662,16 @@ caM bek ccQ bbg -cfx -cfx -cel -ceL -cfx -cfx -cnC -cpR -cqy -cth +bZU +bZU +bZU +cyl +bZU +bZU +crU +bVk +cqB +crO cfw cun cvx @@ -127317,11 +126725,11 @@ dab dbT dci ddU -csR -dcY -dcY -dds -cZP +bHo +bMs +bMs +bNZ +bMu cVG ddL cNz @@ -127511,16 +126919,16 @@ caM bek ccQ bbi -cfx -cgI -cik -cjR -clf -cmu -cnD -cqd -cqB -crO +bZU +cfE +bVZ +bXC +bXE +bXG +crU +cmz +cmz +cmz cfw cuo cvy @@ -127574,11 +126982,11 @@ dbJ dbU dez dej -ctN -cZP -cZP -cZP -ddA +bMo +bMu +bMu +bMu +bPl cVG ddM ddN @@ -127692,7 +127100,7 @@ abq abq aaa agC -agZ +adg aib aja ajY @@ -127768,15 +127176,15 @@ caM bek ccQ bbi -cfx -cgJ -cil -cjS -clg -cmv -cnC -cmz -cmz +bZU +bVI +ckP +bXD +chy +bYq +bWl +bVl +bVG cmz cmz cup @@ -127831,11 +127239,11 @@ dab dbV cYR ddX -ctk -dcZ -cZP -ddt -cZP +bMp +bMv +bMu +bOc +bMu cVG dcD cNz @@ -127950,7 +127358,7 @@ abq aaa agC agC -ahH +agE aiA anJ ajz @@ -128025,15 +127433,15 @@ cbj bek ccS cej -cfx -ckG -cim -ciX -clh -cmw -cfx -cdN -cqo +bZU +bVX +bWa +chy +chy +bYQ +bZU +chy +chy crS cta cic @@ -128088,11 +127496,11 @@ dab dbW deB det -ctU +bMq dcX -cZP -cZP -ddB +bMu +bMu +bPI cVG dcD cVG @@ -128256,7 +127664,7 @@ bhw bnE ble bna -dgV +aWE bqs boI bui @@ -128282,14 +127690,14 @@ caB cbI cdE bZu -cfx -cfx -cfx -cfx -cfx -cfx -cfx -cjn +bZU +bZU +bWl +bUR +bWl +bWl +bZU +chy cqp crU cmz @@ -128297,9 +127705,9 @@ cvX cvB cwQ bYI -cza +bNN czR -cEf +bQW cBS cDK cxU @@ -128345,11 +127753,11 @@ dcy dcA ddR des -dcI +bGU cVG -ddh -ddu -ddC +bNG +bPj +bPK cVG dcD cVG @@ -128544,9 +127952,9 @@ dhd cin cjU dhq -coG -cnE -cqA +cBk +cOM +bVr cqq ctj ctb @@ -128589,12 +127997,12 @@ cXW cYu cYU cZr -cZP -cZP +bMu +bMu cZH cZr -cZP -cZP +bMu +bMu cZH cZr csD @@ -128801,8 +128209,8 @@ bZu bZu bZu clj -dhs -bZU +bZO +cqo crv csn ctE @@ -128846,12 +128254,12 @@ cXX cYv cYV cZr -cZP -cZP +bMu +bMu cZH cZr -cZP -cZP +bMu +bMu cZH cZr dbD @@ -128977,9 +128385,9 @@ abq aid adF adH -agE +adZ ahl -ajs +agZ afr akC akO @@ -129103,16 +128511,16 @@ cnT cnV cpe cZr -cZP -cZP +bMu +bMu dav cZr aOE -cZP +bMu dav cZr -cZP -cZP +bMu +bMu cZH cVG dcE @@ -129368,8 +128776,8 @@ cVG cVG cVG cVG -cZP -cZP +bMu +bMu dav cVG cVG @@ -129575,7 +128983,7 @@ clj cmz cnG coS -cqt +wyX crY ctc cuu @@ -129831,10 +129239,10 @@ bZv clj cmz cny -coT -cqu +cqt +cqt crZ -bQv +cOm cuv cvG cwU @@ -130089,7 +129497,7 @@ cmZ cmA cnI coU -cqD +cqt csa cfw cic @@ -130794,7 +130202,7 @@ aok avv akh aBr -aKM +aok aKM bAC aok @@ -132346,8 +131754,8 @@ avr aEm aFG aGO -aIm -aJE +aIp +aJF aLf aMv aNP @@ -132673,7 +132081,7 @@ chy bZU bZU bZU -cFI +bGQ cHS cJu cBN @@ -132860,10 +132268,10 @@ aCW aEo aFI aGQ -aIo aJF +aJE aLf -aMw +aMy aNQ aUf aQM @@ -133117,10 +132525,10 @@ aCX aEp aFJ aGR -aIp +aJG aJG aLh -aMx +aLm aNQ aPq aQN @@ -133372,12 +132780,12 @@ aAH aye aCY aEq -aIc +aGz aGS -aye +aJE +aJE aJH -aLi -aMy +aMw aNQ aPh aQN @@ -133624,20 +133032,20 @@ auP avv avv ayf -azl +avv avv aBP -azl +avv aEr avv -azl -aIq +aGU +avv +aIr +aJK avv -aLj -azl aNQ aPI -aQN +blh aSB aQX aSB @@ -133881,17 +133289,17 @@ auH avv axP ayg -azm +avv aBF aBQ -azm +avv aED avv -aIT -aIr +aGV +aIq avv -aLk -aQi +aLi +aMC aNQ aPz aQO @@ -133920,9 +133328,9 @@ bZJ aoG bEC bGn -bHV -bJO bLI +bJO +bTd bIN bPe bEG @@ -134144,11 +133552,11 @@ aBR avv aEu avv -aGU +aIc aIs avv -aLl -aMA +aLk +aMx aNQ aPi aQP @@ -134377,9 +133785,9 @@ aaa abq aaa afb -ajr +ahH agh -ajS +ajs afb ajb ajp @@ -134401,11 +133809,11 @@ aBS avv aEu avv -ayp +aIm aIt avv -aLm -aMB +aLj +aMA aNQ aPj aQQ @@ -134441,8 +133849,8 @@ bJN bPg bEG bTP +bUg bUm -bVC bXq bEG caI @@ -134658,11 +134066,11 @@ avv avv aEv avv +aIo +aIT avv -avv -avv -avv -avv +aLl +aMB aNQ aNQ aNQ @@ -134915,18 +134323,18 @@ aBT aoG aBW aoG -aGV -asJ -aub -asJ -aMC +aoG +aoG +aoG +aoG +aoG buC aPk awv -aSf +aQi asI aUI -asJ +aSf aZB aoG azy @@ -135467,11 +134875,11 @@ aoG aoG aoG axh -bQV -bQV -bQV -bQV -bQV +axh +axh +axh +brg +axh aoG aoG aoG @@ -135701,7 +135109,7 @@ aYE aZI aYV bam -bfr +bdE bdy beI bgu @@ -135722,13 +135130,13 @@ bGr bHZ bJQ bLO -bNG -bPj -bQW -bSD -bVr -bVG -bQV +bkj +bFh +axh +bxs +bnR +brR +axh bYG bVL aoG @@ -135942,7 +135350,7 @@ ayo aBX asJ axh -aGX +ajS aHa aIA aJL @@ -135963,7 +135371,7 @@ bdz beJ bgv bhS -bnL +aGX bam bnr bpf @@ -135979,13 +135387,13 @@ bGs bGs bJR bLP -bNH -bPk +bkU bTK -bSE +axh +bmG +bnS bUp -bVH -bQV +axh bUr bZH aoG @@ -136237,12 +135645,12 @@ bIa byU bLQ bNI -bPl -bQV -bUg -bUq -bVG -bQV +bGR +axh +bnL +bnU +bFl +axh asJ bZI aoG @@ -136456,7 +135864,7 @@ aoG aBW aDa axh -aIu +akP aHg aIx aJM @@ -136481,9 +135889,9 @@ bob bam bnt bnt -bls +bjL bbf -bqN +bjM bnt bnt bAJ @@ -136496,10 +135904,10 @@ bNK bNJ bPm bCM -bQV -bQV -bQV -bQV +axh +bqN +axh +axh asJ asJ aoG @@ -137531,7 +136939,7 @@ bXt asJ arr bCM -cca +biJ cdt ceF cfT @@ -137788,7 +137196,7 @@ bCM bCM bCM bCM -ccb +bjK cdu ceG cfN @@ -138026,7 +137434,7 @@ bpi bqS bsC bqS -bxa +bxm bjN bAO bCM @@ -138043,8 +137451,8 @@ bSJ bVN bVN bCM -cBH -cBH +bhY +bhY cDi cdv ceH @@ -138261,7 +137669,7 @@ aIF aJZ aCg aCg -aPL +alQ aCg aPL aCg @@ -138272,18 +137680,18 @@ ccH baA bat aFR -bdE -bdE -bdE -bdE -bdE -bdE -brR +aFR +aFR +aFR +aFR +aFR +aFR +aWw bpi bqS bsC bqS -bxb +bxn bjN bjN bCM @@ -138527,14 +137935,14 @@ aVi aZd ccH aQU +aqe +aqv +aFR +ayE +aAO +aHw baE -bck -bdE -biz -bjO -bhY -bjK -bkU +bhZ bnB dfz bqT @@ -138786,12 +138194,12 @@ bao bbC bcG bcp -bdE -biJ +aFR +azv +aAW +aIu +bck bgE -bhZ -bjL -blw bnC dfB dgM @@ -138812,10 +138220,10 @@ bRb bSM bCN bWU -bYq +bgL bWU bCN -cdq +biz ccf bGG bPw @@ -139043,17 +138451,17 @@ aZO baB bcC bft -bdE -biA -bjP -bmG -bjM -bkV +aFR +azJ +aHl +bfr +bjO +bhZ bnD dfA dgL bvt -bvk +blk bqU bCu bFE @@ -139300,17 +138708,17 @@ aLE aHi aCg aEn -bdE -bdE -bdE -bdE -bdE -bdE +aFR +aFR +aFR +aFR +aFR +aFR bli blj dgO bjN -bwv +bAP bAP bnt bAS @@ -139329,7 +138737,7 @@ bXJ bXJ bZG bCN -cbJ +biA ccf bGG bPw @@ -139567,7 +138975,7 @@ dfm bsZ dgN bnt -bwr +bxf bxf bnt bCL @@ -139824,7 +139232,7 @@ dft dfI dgP bvu -bwF +bly bxg byZ bAU @@ -140081,7 +139489,7 @@ dfq bta anq bsG -bwy +bza bxh bza bAV @@ -140338,7 +139746,7 @@ dfx dfK anq bvv -bwM +bvk bAt bCw bCY @@ -140595,7 +140003,7 @@ dfu dfJ anq bsI -bwL +bwr aWC bzc bAX @@ -140852,7 +140260,7 @@ dfy btc anq bsJ -bwU +bwv aaa aaa bsJ @@ -141106,10 +140514,10 @@ aCg asX dfk deZ -dfL +bkV anq bsJ -bwU +bwv aaa bqY bAY @@ -141366,7 +140774,7 @@ aoN dgK anq bsK -bwX +bwy bxj bzd bAZ @@ -141623,7 +141031,7 @@ dfl azD anq bsL -bwW +bwF bsN aaa abq @@ -141880,7 +141288,7 @@ abq abq anq abq -bwY +bwL abq abq abq @@ -142131,13 +141539,13 @@ aCg aCg kWU rzO -sJs +aDL aaa aaa aaa abq aaa -bwY +bwL aaa aaa abq @@ -142357,9 +141765,9 @@ aaa aaa aaa aoG -aWE +ajA bnG -aWG +atI axh azf dAH @@ -142394,7 +141802,7 @@ aaa aaa abq aaa -bwY +bwL aaa aaa abq @@ -142651,7 +142059,7 @@ aaa aaa abq abq -bxi +bwM abq abq abq @@ -142908,7 +142316,7 @@ fnC abq abq aaa -bxl +bwU aaa abq aaa @@ -143165,7 +142573,7 @@ aaa aaa abq aaa -bwY +bwL aaa abq abq @@ -143422,7 +142830,7 @@ fBB fBB abq aaa -bwY +bwL aaa abq aaa @@ -143679,7 +143087,7 @@ aaa aaa abq aaa -bwY +bwL aaa abq abq @@ -143936,7 +143344,7 @@ aaa aaa abq aaa -bwY +bwL aaa abq aaa @@ -144193,7 +143601,7 @@ aaa aaa abq aaa -bwY +bwL aaa abq abq @@ -144450,7 +143858,7 @@ aaa aaa abq abq -bxi +bwM abq abq aaa @@ -144707,7 +144115,7 @@ aaa aaa abq aaa -bwY +bwL aaa abq abq @@ -144964,7 +144372,7 @@ aaa aaa abq aaa -bwY +bwL aaa abq aaa @@ -145221,7 +144629,7 @@ aaa aaa abq aaa -bwY +bwL aaa abq aaa @@ -145478,7 +144886,7 @@ aaa aaa abq aaa -bwY +bwL aaa abq aaa @@ -145735,7 +145143,7 @@ aaa aaa abq aaa -bwY +bwL aaa abq aaa @@ -145992,7 +145400,7 @@ aaa aaa abq aaa -bwY +bwL aaa abq aaa @@ -146249,7 +145657,7 @@ aaa aaa abq abq -bxi +bwM abq abq aaa @@ -146506,7 +145914,7 @@ aaa abq abq aaa -bwY +bwL aaa abq abq @@ -146763,7 +146171,7 @@ abq bpr aaa aaa -bxl +bwU aaa aaa bpr @@ -147020,7 +146428,7 @@ aaa aaa abq buL -bxm +bwW bxk aaa aaa @@ -147277,7 +146685,7 @@ aaa aaa bsP bud -bxn +bwX bzt bxk aaa @@ -147534,7 +146942,7 @@ aaa aaa bsR buM -bxo +bwY bsL bBa aaa @@ -147791,7 +147199,7 @@ aef abq bsQ abq -bxo +bwY abq bFk abq @@ -148048,7 +147456,7 @@ blE eSt bsS buO -bxq +bxa bBb bGN aaa @@ -148305,7 +147713,7 @@ blE bsd brd buN -bxp +bxb bzu bGM aaa @@ -148562,7 +147970,7 @@ bnK boo cKI buQ -bxt +bxi bBd cKI abd @@ -148819,7 +148227,7 @@ blE sjF kBq buP -bxs +bxl bBc bse aXH diff --git a/_maps/map_files/MetaStation/z2.dmm b/_maps/map_files/MetaStation/z2.dmm index fe4c3a6e2e3..79367d5c073 100644 --- a/_maps/map_files/MetaStation/z2.dmm +++ b/_maps/map_files/MetaStation/z2.dmm @@ -1312,7 +1312,7 @@ }, /area/vox_station) "dA" = ( -/obj/vox/win_button, +/obj/machinery/vox_win_button, /turf/unsimulated/floor{ tag = "icon-light_on"; icon_state = "light_on" diff --git a/_maps/map_files/cyberiad/z2.dmm b/_maps/map_files/cyberiad/z2.dmm index 987c1ee28b4..4950ddf2763 100644 --- a/_maps/map_files/cyberiad/z2.dmm +++ b/_maps/map_files/cyberiad/z2.dmm @@ -109,7 +109,7 @@ }, /area/holodeck/source_wildlife) "ay" = ( -/obj/vox/win_button, +/obj/machinery/vox_win_button, /turf/unsimulated/floor/vox{ icon_state = "light_on" }, diff --git a/code/ATMOSPHERICS/atmospherics.dm b/code/ATMOSPHERICS/atmospherics.dm index 6f65661e2d4..be820b9b6a1 100644 --- a/code/ATMOSPHERICS/atmospherics.dm +++ b/code/ATMOSPHERICS/atmospherics.dm @@ -8,7 +8,6 @@ Pipelines and other atmospheric objects combine to form pipe_networks Pipes -> Pipelines Pipelines + Other Objects -> Pipe network */ -GLOBAL_DATUM_INIT(pipe_icon_manager, /datum/pipe_icon_manager, new()) /obj/machinery/atmospherics anchored = 1 layer = GAS_PIPE_HIDDEN_LAYER //under wires @@ -51,6 +50,8 @@ GLOBAL_DATUM_INIT(pipe_icon_manager, /datum/pipe_icon_manager, new()) /obj/machinery/atmospherics/proc/atmos_init() if(can_unwrench) stored = new(src, make_from = src) + // Updates all pipe overlays and underlays + update_underlays() /obj/machinery/atmospherics/Destroy() QDEL_NULL(stored) @@ -74,14 +75,11 @@ GLOBAL_DATUM_INIT(pipe_icon_manager, /datum/pipe_icon_manager, new()) pipe_image = image(src, loc, layer = ABOVE_HUD_LAYER, dir = dir) //the 20 puts it above Byond's darkness (not its opacity view) pipe_image.plane = HUD_PLANE -/obj/machinery/atmospherics/proc/check_icon_cache(var/safety = 0) - if(!istype(GLOB.pipe_icon_manager)) - if(!safety) //to prevent infinite loops - GLOB.pipe_icon_manager = new() - check_icon_cache(1) - return 0 +/obj/machinery/atmospherics/proc/check_icon_cache() + if(!istype(SSair.icon_manager)) + return FALSE - return 1 + return TRUE /obj/machinery/atmospherics/proc/color_cache_name(var/obj/machinery/atmospherics/node) //Don't use this for standard pipes @@ -93,14 +91,14 @@ GLOBAL_DATUM_INIT(pipe_icon_manager, /datum/pipe_icon_manager, new()) /obj/machinery/atmospherics/proc/add_underlay(var/turf/T, var/obj/machinery/atmospherics/node, var/direction, var/icon_connect_type) if(node) if(T.intact && node.level == 1 && istype(node, /obj/machinery/atmospherics/pipe)) - //underlays += GLOB.pipe_icon_manager.get_atmos_icon("underlay_down", direction, color_cache_name(node)) - underlays += GLOB.pipe_icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "down" + icon_connect_type) + //underlays += SSair.icon_manager.get_atmos_icon("underlay_down", direction, color_cache_name(node)) + underlays += SSair.icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "down" + icon_connect_type) else - //underlays += GLOB.pipe_icon_manager.get_atmos_icon("underlay_intact", direction, color_cache_name(node)) - underlays += GLOB.pipe_icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "intact" + icon_connect_type) + //underlays += SSair.icon_manager.get_atmos_icon("underlay_intact", direction, color_cache_name(node)) + underlays += SSair.icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "intact" + icon_connect_type) else - //underlays += GLOB.pipe_icon_manager.get_atmos_icon("underlay_exposed", direction, pipe_color) - underlays += GLOB.pipe_icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "exposed" + icon_connect_type) + //underlays += SSair.icon_manager.get_atmos_icon("underlay_exposed", direction, pipe_color) + underlays += SSair.icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "exposed" + icon_connect_type) /obj/machinery/atmospherics/proc/update_underlays() if(check_icon_cache()) @@ -197,9 +195,9 @@ GLOBAL_DATUM_INIT(pipe_icon_manager, /datum/pipe_icon_manager, new()) //You unwrenched a pipe full of pressure? let's splat you into the wall silly. if(unsafe_wrenching) - if(safefromgusts) + if(safefromgusts) to_chat(user, "Your magboots cling to the floor as a great burst of wind bellows against you.") - else + else unsafe_pressure_release(user,internal_pressure) deconstruct(TRUE) else @@ -337,11 +335,11 @@ GLOBAL_DATUM_INIT(pipe_icon_manager, /datum/pipe_icon_manager, new()) /obj/machinery/atmospherics/proc/add_underlay_adapter(var/turf/T, var/obj/machinery/atmospherics/node, var/direction, var/icon_connect_type) //modified from add_underlay, does not make exposed underlays if(node) if(T.intact && node.level == 1 && istype(node, /obj/machinery/atmospherics/pipe)) - underlays += GLOB.pipe_icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "down" + icon_connect_type) + underlays += SSair.icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "down" + icon_connect_type) else - underlays += GLOB.pipe_icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "intact" + icon_connect_type) + underlays += SSair.icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "intact" + icon_connect_type) else - underlays += GLOB.pipe_icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "retracted" + icon_connect_type) + underlays += SSair.icon_manager.get_atmos_icon("underlay", direction, color_cache_name(node), "retracted" + icon_connect_type) /obj/machinery/atmospherics/singularity_pull(S, current_size) if(current_size >= STAGE_FIVE) diff --git a/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm b/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm index 43b3c382c95..e3da9ae0bc1 100644 --- a/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm +++ b/code/ATMOSPHERICS/components/binary_devices/dp_vent_pump.dm @@ -94,7 +94,7 @@ else vent_icon += "[on ? "[pump_direction ? "out" : "in"]" : "off"]" - overlays += GLOB.pipe_icon_manager.get_atmos_icon("device", , , vent_icon) + overlays += SSair.icon_manager.get_atmos_icon("device", , , vent_icon) /obj/machinery/atmospherics/binary/dp_vent_pump/update_underlays() if(..()) diff --git a/code/ATMOSPHERICS/components/trinary_devices/filter.dm b/code/ATMOSPHERICS/components/trinary_devices/filter.dm index 1ba338e7d88..d248a2e7285 100755 --- a/code/ATMOSPHERICS/components/trinary_devices/filter.dm +++ b/code/ATMOSPHERICS/components/trinary_devices/filter.dm @@ -20,7 +20,7 @@ /// The amount of pressure the filter wants to operate at. var/target_pressure = ONE_ATMOSPHERE /// The type of gas we want to filter. Valid values that go here are from the `FILTER` defines at the top of the file. - var/filter_type = FILTER_NOTHING + var/filter_type = FILTER_TOXINS /// The frequency of the filter. Used with `radio_connection`. var/frequency = NONE /// A reference to the filter's `datum/radio_frequency`. diff --git a/code/ATMOSPHERICS/components/unary_devices/vent_pump.dm b/code/ATMOSPHERICS/components/unary_devices/vent_pump.dm index 5725a7a8e9b..b2f575b2a57 100644 --- a/code/ATMOSPHERICS/components/unary_devices/vent_pump.dm +++ b/code/ATMOSPHERICS/components/unary_devices/vent_pump.dm @@ -104,7 +104,7 @@ else vent_icon += "[on ? "[pump_direction ? "out" : "in"]" : "off"]" - overlays += GLOB.pipe_icon_manager.get_atmos_icon("device", , , vent_icon) + overlays += SSair.icon_manager.get_atmos_icon("device", , , vent_icon) update_pipe_image() diff --git a/code/ATMOSPHERICS/components/unary_devices/vent_scrubber.dm b/code/ATMOSPHERICS/components/unary_devices/vent_scrubber.dm index bbd5e760d2f..474b6c1b7f5 100644 --- a/code/ATMOSPHERICS/components/unary_devices/vent_scrubber.dm +++ b/code/ATMOSPHERICS/components/unary_devices/vent_scrubber.dm @@ -118,7 +118,7 @@ if(welded) scrubber_icon = "scrubberweld" - overlays += GLOB.pipe_icon_manager.get_atmos_icon("device", , , scrubber_icon) + overlays += SSair.icon_manager.get_atmos_icon("device", , , scrubber_icon) update_pipe_image() /obj/machinery/atmospherics/unary/vent_scrubber/update_underlays() diff --git a/code/ATMOSPHERICS/pipes/cap.dm b/code/ATMOSPHERICS/pipes/cap.dm index 15b53d83e9c..bc85edb7c44 100644 --- a/code/ATMOSPHERICS/pipes/cap.dm +++ b/code/ATMOSPHERICS/pipes/cap.dm @@ -55,14 +55,14 @@ /obj/machinery/atmospherics/pipe/cap/update_icon(var/safety = 0) ..() - + if(!check_icon_cache()) return alpha = 255 overlays.Cut() - overlays += GLOB.pipe_icon_manager.get_atmos_icon("pipe", , pipe_color, "cap" + icon_connect_type) + overlays += SSair.icon_manager.get_atmos_icon("pipe", , pipe_color, "cap" + icon_connect_type) /obj/machinery/atmospherics/pipe/cap/atmos_init() ..() diff --git a/code/ATMOSPHERICS/pipes/manifold.dm b/code/ATMOSPHERICS/pipes/manifold.dm index 2eef5ad74c4..6c90bfd4fbd 100644 --- a/code/ATMOSPHERICS/pipes/manifold.dm +++ b/code/ATMOSPHERICS/pipes/manifold.dm @@ -123,8 +123,8 @@ alpha = 255 overlays.Cut() - overlays += GLOB.pipe_icon_manager.get_atmos_icon("manifold", , pipe_color, "core" + icon_connect_type) - overlays += GLOB.pipe_icon_manager.get_atmos_icon("manifold", , , "clamps" + icon_connect_type) + overlays += SSair.icon_manager.get_atmos_icon("manifold", , pipe_color, "core" + icon_connect_type) + overlays += SSair.icon_manager.get_atmos_icon("manifold", , , "clamps" + icon_connect_type) underlays.Cut() var/turf/T = get_turf(src) diff --git a/code/ATMOSPHERICS/pipes/manifold4w.dm b/code/ATMOSPHERICS/pipes/manifold4w.dm index 2b384b3684b..688f9564ac8 100644 --- a/code/ATMOSPHERICS/pipes/manifold4w.dm +++ b/code/ATMOSPHERICS/pipes/manifold4w.dm @@ -96,8 +96,8 @@ alpha = 255 overlays.Cut() - overlays += GLOB.pipe_icon_manager.get_atmos_icon("manifold", , pipe_color, "4way" + icon_connect_type) - overlays += GLOB.pipe_icon_manager.get_atmos_icon("manifold", , , "clamps_4way" + icon_connect_type) + overlays += SSair.icon_manager.get_atmos_icon("manifold", , pipe_color, "4way" + icon_connect_type) + overlays += SSair.icon_manager.get_atmos_icon("manifold", , , "clamps_4way" + icon_connect_type) underlays.Cut() var/turf/T = get_turf(src) diff --git a/code/ATMOSPHERICS/pipes/simple/pipe_simple.dm b/code/ATMOSPHERICS/pipes/simple/pipe_simple.dm index 7e304170e54..3874e01c742 100644 --- a/code/ATMOSPHERICS/pipes/simple/pipe_simple.dm +++ b/code/ATMOSPHERICS/pipes/simple/pipe_simple.dm @@ -147,9 +147,9 @@ overlays.Cut() if(node1 && node2) - overlays += GLOB.pipe_icon_manager.get_atmos_icon("pipe", , pipe_color, pipe_icon + "intact" + icon_connect_type) + overlays += SSair.icon_manager.get_atmos_icon("pipe", , pipe_color, pipe_icon + "intact" + icon_connect_type) else - overlays += GLOB.pipe_icon_manager.get_atmos_icon("pipe", , pipe_color, pipe_icon + "exposed[node1?1:0][node2?1:0]" + icon_connect_type) + overlays += SSair.icon_manager.get_atmos_icon("pipe", , pipe_color, pipe_icon + "exposed[node1?1:0][node2?1:0]" + icon_connect_type) // A check to make sure both nodes exist - self-delete if they aren't present /obj/machinery/atmospherics/pipe/simple/check_nodes_exist() diff --git a/code/ATMOSPHERICS/pipes/simple/pipe_simple_hidden.dm b/code/ATMOSPHERICS/pipes/simple/pipe_simple_hidden.dm index e0bd78bc2de..0df4cd3fc64 100644 --- a/code/ATMOSPHERICS/pipes/simple/pipe_simple_hidden.dm +++ b/code/ATMOSPHERICS/pipes/simple/pipe_simple_hidden.dm @@ -29,14 +29,14 @@ /obj/machinery/atmospherics/pipe/simple/hidden/universal/update_icon(var/safety = 0) ..() - + if(!check_icon_cache()) return alpha = 255 overlays.Cut() - overlays += GLOB.pipe_icon_manager.get_atmos_icon("pipe", , pipe_color, "universal") + overlays += SSair.icon_manager.get_atmos_icon("pipe", , pipe_color, "universal") underlays.Cut() if(node1) diff --git a/code/ATMOSPHERICS/pipes/simple/pipe_simple_visible.dm b/code/ATMOSPHERICS/pipes/simple/pipe_simple_visible.dm index 410c992c74c..c2708be19eb 100644 --- a/code/ATMOSPHERICS/pipes/simple/pipe_simple_visible.dm +++ b/code/ATMOSPHERICS/pipes/simple/pipe_simple_visible.dm @@ -40,14 +40,14 @@ /obj/machinery/atmospherics/pipe/simple/visible/universal/update_icon(var/safety = 0) ..() - + if(!check_icon_cache()) return alpha = 255 overlays.Cut() - overlays += GLOB.pipe_icon_manager.get_atmos_icon("pipe", , pipe_color, "universal") + overlays += SSair.icon_manager.get_atmos_icon("pipe", , pipe_color, "universal") underlays.Cut() if(node1) diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index cbc691e3c2a..faf94d8c177 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -72,8 +72,6 @@ to_chat(world, "pAI software module [P.name] has the same key as [O.name]!") continue GLOB.pai_software_by_key[P.id] = P - if(P.default) - GLOB.default_pai_software[P.id] = P // Setup loadout gear for(var/geartype in subtypesof(/datum/gear)) diff --git a/code/_globalvars/lists/misc.dm b/code/_globalvars/lists/misc.dm index 3a0c58bffb3..d065f5fa7bc 100644 --- a/code/_globalvars/lists/misc.dm +++ b/code/_globalvars/lists/misc.dm @@ -55,6 +55,4 @@ GLOBAL_LIST_INIT(cooking_recipes, list(RECIPE_MICROWAVE = list(), RECIPE_OVEN = GLOBAL_LIST_INIT(cooking_ingredients, list(RECIPE_MICROWAVE = list(), RECIPE_OVEN = list(), RECIPE_GRILL = list(), RECIPE_CANDY = list())) GLOBAL_LIST_INIT(cooking_reagents, list(RECIPE_MICROWAVE = list(), RECIPE_OVEN = list(), RECIPE_GRILL = list(), RECIPE_CANDY = list())) -GLOBAL_LIST(station_level_space_turfs) - #define EGG_LAYING_MESSAGES list("lays an egg.", "squats down and croons.", "begins making a huge racket.", "begins clucking raucously.") diff --git a/code/controllers/subsystem/air.dm b/code/controllers/subsystem/air.dm index 80ce66d13ec..061c057c368 100644 --- a/code/controllers/subsystem/air.dm +++ b/code/controllers/subsystem/air.dm @@ -39,6 +39,9 @@ SUBSYSTEM_DEF(air) var/list/active_super_conductivity = list() var/list/high_pressure_delta = list() + /// Pipe overlay/underlay icon manager + var/datum/pipe_icon_manager/icon_manager + var/list/currentrun = list() var/currentpart = SSAIR_DEFERREDPIPENETS @@ -66,6 +69,7 @@ SUBSYSTEM_DEF(air) /datum/controller/subsystem/air/Initialize(timeofday) setup_overlays() // Assign icons and such for gas-turf-overlays + icon_manager = new() // Sets up icon manager for pipes setup_allturfs() setup_atmos_machinery(GLOB.machines) setup_pipenets(GLOB.machines) diff --git a/code/controllers/subsystem/changelog.dm b/code/controllers/subsystem/changelog.dm index eef8ee6da62..0dc3bec8cd1 100644 --- a/code/controllers/subsystem/changelog.dm +++ b/code/controllers/subsystem/changelog.dm @@ -245,7 +245,7 @@ SUBSYSTEM_DEF(changelog) if(config.wikiurl) if(alert("This will open the wiki in your browser. Are you sure?",,"Yes","No")=="No") return - usr.client.wiki("") // Blank arg is important here + usr.client.wiki() else to_chat(usr, "The Wiki URL is not set in the server configuration. Please inform the server host.") diff --git a/code/datums/action.dm b/code/datums/action.dm index 18c5c4f885e..bca714f9c73 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -16,8 +16,6 @@ var/icon_icon = 'icons/mob/actions/actions.dmi' var/button_icon_state = "default" var/mob/owner - /// Whether to darken the button or not if [/datum/action/proc/IsAvailable] return FALSE. - var/darken_when_unavailable = TRUE /datum/action/New(var/Target) target = Target @@ -99,17 +97,18 @@ // If the action isn't available, darken the button if(!IsAvailable()) - if(!darken_when_unavailable) - return - var/image/img = image('icons/mob/screen_white.dmi', icon_state = "template") - img.alpha = 200 - img.appearance_flags = RESET_COLOR | RESET_ALPHA - img.color = "#000000" - img.plane = FLOAT_PLANE + 1 - button.overlays += img + apply_unavailable_effect() else return TRUE +/datum/action/proc/apply_unavailable_effect() + var/image/img = image('icons/mob/screen_white.dmi', icon_state = "template") + img.alpha = 200 + img.appearance_flags = RESET_COLOR | RESET_ALPHA + img.color = "#000000" + img.plane = FLOAT_PLANE + 1 + button.add_overlay(img) + /datum/action/proc/ApplyIcon(obj/screen/movable/action_button/current_button) current_button.cut_overlays() if(icon_icon && button_icon_state) @@ -117,7 +116,7 @@ img.appearance_flags = RESET_COLOR | RESET_ALPHA img.pixel_x = 0 img.pixel_y = 0 - current_button.overlays += img + current_button.add_overlay(img) //Presets for item actions /datum/action/item_action @@ -476,7 +475,6 @@ /datum/action/spell_action check_flags = 0 background_icon_state = "bg_spell" - darken_when_unavailable = FALSE var/recharge_text_color = "#FFFFFF" /datum/action/spell_action/New(Target) @@ -515,26 +513,28 @@ return spell.can_cast(owner) return FALSE -/datum/action/spell_action/UpdateButtonIcon() - if(button && !(. = ..())) - var/obj/effect/proc_holder/spell/S = target - if(!istype(S)) - return - var/progress = S.get_availability_percentage() - var/col_val_high = 72 * progress + 128 - var/col_val_low = 200 * progress - button.maptext = "
[round_down(progress * 100)]%
" - button.color = rgb(col_val_high, col_val_low, col_val_low, col_val_high) - else - button.maptext = null +/datum/action/spell_action/apply_unavailable_effect() + var/obj/effect/proc_holder/spell/S = target + if(!istype(S)) + return ..() + var/progress = S.get_availability_percentage() + if(progress == 1) + return ..() // This means that the spell is charged but unavailable due to something else + + var/alpha = 220 - 140 * progress + + var/image/img = image('icons/mob/screen_white.dmi', icon_state = "template") + img.alpha = alpha + img.appearance_flags = RESET_COLOR | RESET_ALPHA + img.color = "#000000" + img.plane = FLOAT_PLANE + 1 + button.add_overlay(img) + // Make a holder for the charge text + var/image/count_down_holder = image('icons/effects/effects.dmi', icon_state = "nothing") + count_down_holder.plane = FLOAT_PLANE + 1.1 + count_down_holder.maptext = "
[round_down(progress * 100)]%
" + button.add_overlay(count_down_holder) -/datum/action/spell_action/ApplyIcon(obj/screen/movable/action_button/current_button) - current_button.cut_overlays() - if(icon_icon && button_icon_state) - var/image/img = image(icon_icon, current_button, button_icon_state) - img.pixel_x = 0 - img.pixel_y = 0 - current_button.overlays += img /* /datum/action/spell_action/alien diff --git a/code/datums/spell.dm b/code/datums/spell.dm index abb9fdc37c9..3e77be7d6e2 100644 --- a/code/datums/spell.dm +++ b/code/datums/spell.dm @@ -322,6 +322,8 @@ GLOBAL_LIST_INIT(spells, typesof(/obj/effect/proc_holder/spell)) if("recharge") if(charge_counter == 0) return 0 + if(charge_max == 0) + return 1 return charge_counter / charge_max if("charges") if(charge_counter) diff --git a/code/datums/spells/mime.dm b/code/datums/spells/mime.dm index 11b0a75b275..7142448dbdf 100644 --- a/code/datums/spells/mime.dm +++ b/code/datums/spells/mime.dm @@ -38,7 +38,7 @@ include_user = 1 human_req = 1 - action_icon_state = "mime" + action_icon_state = "mime_silence" action_background_icon_state = "bg_mime" /obj/effect/proc_holder/spell/targeted/mime/speak/Click() @@ -77,7 +77,7 @@ range = -1 include_user = TRUE - action_icon_state = "mime" + action_icon_state = "mime_bigwall" action_background_icon_state = "bg_mime" large = TRUE diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm index 78b9e1c0413..e6b2e8d2008 100644 --- a/code/datums/status_effects/buffs.dm +++ b/code/datums/status_effects/buffs.dm @@ -219,13 +219,15 @@ owner.adjustBruteLoss(-25) owner.adjustFireLoss(-25) owner.remove_CC() - owner.bodytemperature = BODYTEMP_NORMAL if(ishuman(owner)) var/mob/living/carbon/human/H = owner + H.bodytemperature = H.dna.species.body_temperature for(var/thing in H.bodyparts) var/obj/item/organ/external/E = thing E.internal_bleeding = FALSE E.mend_fracture() + else + owner.bodytemperature = BODYTEMP_NORMAL return TRUE /datum/status_effect/regenerative_core/on_remove() diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index 98272825e2f..6282fcef75a 100644 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -1802,6 +1802,16 @@ GLOBAL_LIST_INIT(all_supply_groups, list(SUPPLY_EMERGENCY,SUPPLY_SECURITY,SUPPLY ) containername = "bluespace artillery parts crate" + +/datum/supply_packs/misc/station_goal/bluespace_tap + name = "Bluespace Harvester Parts" + cost = 150 + contains = list( + /obj/item/circuitboard/machine/bluespace_tap, + /obj/item/paper/bluespace_tap + ) + containername = "bluespace harvester parts crate" + /datum/supply_packs/misc/station_goal/dna_vault name = "DNA Vault Parts" cost = 120 diff --git a/code/game/area/Dynamic areas.dm b/code/game/area/dynamic_areas.dm similarity index 100% rename from code/game/area/Dynamic areas.dm rename to code/game/area/dynamic_areas.dm diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/ss13_areas.dm similarity index 99% rename from code/game/area/Space Station 13 areas.dm rename to code/game/area/ss13_areas.dm index 9a333d268f3..8792e710f2b 100644 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/ss13_areas.dm @@ -1238,7 +1238,6 @@ NOTE: there are two lists of areas in the end of this file: centcom and station /area/medical/psych name = "\improper Psych Room" icon_state = "medbaypsych" - ambientsounds = list('sound/ambience/aurora_caelus_short.ogg') /area/medical/medbreak name = "\improper Break Room" diff --git a/code/game/gamemodes/devil/devil agent/devil_agent.dm b/code/game/gamemodes/devil/devil_agent/devil_agent.dm similarity index 100% rename from code/game/gamemodes/devil/devil agent/devil_agent.dm rename to code/game/gamemodes/devil/devil_agent/devil_agent.dm diff --git a/code/game/gamemodes/heist/heist.dm b/code/game/gamemodes/heist/heist.dm index f95702e7f28..ff4d1720de6 100644 --- a/code/game/gamemodes/heist/heist.dm +++ b/code/game/gamemodes/heist/heist.dm @@ -287,17 +287,17 @@ GLOBAL_LIST_EMPTY(cortical_stacks) //Stacks for 'leave nobody behind' objective. return ..() -/obj/vox/win_button +/obj/machinery/vox_win_button name = "shoal contact computer" desc = "Used to contact the Vox Shoal, generally to arrange for pickup." icon = 'icons/obj/computer.dmi' icon_state = "tcstation" -/obj/vox/win_button/New() +/obj/machinery/vox_win_button/New() . = ..() overlays += icon('icons/obj/computer.dmi', "syndie") -/obj/vox/win_button/attack_hand(mob/user) +/obj/machinery/vox_win_button/attack_hand(mob/user) if(!GAMEMODE_IS_HEIST || (world.time < 10 MINUTES)) //has to be heist, and at least ten minutes into the round to_chat(user, "\The [src] does not appear to have a connection.") return 0 diff --git a/code/game/gamemodes/shadowling/shadowling_abilities.dm b/code/game/gamemodes/shadowling/shadowling_abilities.dm index 883b37f9d83..a3aa9919eb2 100644 --- a/code/game/gamemodes/shadowling/shadowling_abilities.dm +++ b/code/game/gamemodes/shadowling/shadowling_abilities.dm @@ -1,20 +1,21 @@ #define EMPOWERED_THRALL_LIMIT 5 /obj/effect/proc_holder/spell/proc/shadowling_check(var/mob/living/carbon/human/H) - if(!H || !istype(H)) return + if(!H || !istype(H)) + return if(H.incorporeal_move == 1) - to_chat(usr, "You can't use abilities affecting others while you are traversing between worlds!") + to_chat(H, "You can't use abilities affecting others while you are traversing between worlds!") return FALSE if(isshadowling(H) && is_shadow(H)) return 1 if(isshadowlinglesser(H) && is_thrall(H)) return 1 - if(!is_shadow_or_thrall(usr)) - to_chat(usr, "You can't wrap your head around how to do this.") - else if(is_thrall(usr)) - to_chat(usr, "You aren't powerful enough to do this.") - else if(is_shadow(usr)) - to_chat(usr, "Your telepathic ability is suppressed. Hatch or use Rapid Re-Hatch first.") + if(!is_shadow_or_thrall(H)) + to_chat(H, "You can't wrap your head around how to do this.") + else if(is_thrall(H)) + to_chat(H, "You aren't powerful enough to do this.") + else if(is_shadow(H)) + to_chat(H, "Your telepathic ability is suppressed. Hatch or use Rapid Re-Hatch first.") return 0 diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm index cb7e1b2d20b..ce6590c56a9 100644 --- a/code/game/machinery/computer/camera.dm +++ b/code/game/machinery/computer/camera.dm @@ -121,8 +121,8 @@ var/list/visible_turfs = list() for(var/turf/T in (C.isXRay() \ - ? range(C.view_range, C) \ - : view(C.view_range, C))) + ? range(C.view_range, get_turf(C)) \ + : view(C.view_range, get_turf(C)))) visible_turfs += T var/list/bbox = get_bbox_of_atoms(visible_turfs) diff --git a/code/game/machinery/embedded_controller/airlock_controllers.dm b/code/game/machinery/embedded_controller/airlock_controllers.dm index 32924690d97..925b5e883d1 100644 --- a/code/game/machinery/embedded_controller/airlock_controllers.dm +++ b/code/game/machinery/embedded_controller/airlock_controllers.dm @@ -16,61 +16,6 @@ ..() program = new/datum/computer/file/embedded_program/airlock(src) -//Advanced airlock controller for when you want a more versatile airlock controller - useful for turning simple access control rooms into airlocks -/obj/machinery/embedded_controller/radio/airlock/advanced_airlock_controller - name = "Advanced Airlock Controller" - -/obj/machinery/embedded_controller/radio/airlock/advanced_airlock_controller/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) - ui = SSnanoui.try_update_ui(user, src, ui_key, ui, force_open) - if(!ui) - ui = new(user, src, ui_key, "advanced_airlock_console.tmpl", name, 470, 290) - ui.open() - ui.set_auto_update(1) - -/obj/machinery/embedded_controller/radio/airlock/advanced_airlock_controller/ui_data(mob/user, ui_key = "main", datum/topic_state/state = GLOB.default_state) - var/data[0] - - data = list( - "chamber_pressure" = round(program.memory["chamber_sensor_pressure"]), - "external_pressure" = round(program.memory["external_sensor_pressure"]), - "internal_pressure" = round(program.memory["internal_sensor_pressure"]), - "processing" = program.memory["processing"], - "purge" = program.memory["purge"], - "secure" = program.memory["secure"] - ) - - return data - -/obj/machinery/embedded_controller/radio/airlock/advanced_airlock_controller/Topic(href, href_list) - if(..()) - return 1 - - usr.set_machine(src) - src.add_fingerprint(usr) - - var/clean = 0 - switch(href_list["command"]) //anti-HTML-hacking checks - if("cycle_ext") - clean = 1 - if("cycle_int") - clean = 1 - if("force_ext") - clean = 1 - if("force_int") - clean = 1 - if("abort") - clean = 1 - if("purge") - clean = 1 - if("secure") - clean = 1 - - if(clean) - program.receive_user_command(href_list["command"]) - - return 1 - - //Airlock controller for airlock control - most airlocks on the station use this /obj/machinery/embedded_controller/radio/airlock/airlock_controller name = "Airlock Controller" @@ -91,49 +36,34 @@ tag_chamber_sensor = given_tag_chamber_sensor ..() -/obj/machinery/embedded_controller/radio/airlock/airlock_controller/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) - ui = SSnanoui.try_update_ui(user, src, ui_key, ui, force_open) +/obj/machinery/embedded_controller/radio/airlock/airlock_controller/tgui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/tgui_state/state = GLOB.tgui_default_state) + ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) if(!ui) - ui = new(user, src, ui_key, "simple_airlock_console.tmpl", name, 470, 290) + ui = new(user, src, ui_key, "ExternalAirlockController", name, 470, 290, master_ui, state) ui.open() - ui.set_auto_update(1) -/obj/machinery/embedded_controller/radio/airlock/airlock_controller/ui_data(mob/user, ui_key = "main", datum/topic_state/state = GLOB.default_state) - var/data[0] +/obj/machinery/embedded_controller/radio/airlock/airlock_controller/tgui_data(mob/user) + var/list/data = list() - data = list( - "chamber_pressure" = round(program.memory["chamber_sensor_pressure"]), - "exterior_status" = program.memory["exterior_status"], - "interior_status" = program.memory["interior_status"], - "processing" = program.memory["processing"], - ) + data["chamber_pressure"] = round(program.memory["chamber_sensor_pressure"]) + data["exterior_status"] = program.memory["exterior_status"] + data["interior_status"] = program.memory["interior_status"] + data["processing"] = program.memory["processing"] return data -/obj/machinery/embedded_controller/radio/airlock/airlock_controller/Topic(href, href_list) + +/obj/machinery/embedded_controller/radio/airlock/airlock_controller/tgui_act(action, params) if(..()) return - usr.set_machine(src) - src.add_fingerprint(usr) + add_fingerprint(usr) - var/clean = 0 - switch(href_list["command"]) //anti-HTML-hacking checks - if("cycle_ext") - clean = 1 - if("cycle_int") - clean = 1 - if("force_ext") - clean = 1 - if("force_int") - clean = 1 - if("abort") - clean = 1 + var/list/allowed_actions = list("cycle_ext", "cycle_int", "force_ext", "force_int", "abort") + if(action in allowed_actions) //anti-HTML-hacking checks + program.receive_user_command(action) - if(clean) - program.receive_user_command(href_list["command"]) - - return 1 + return TRUE //Access controller for door control - used in virology and the like @@ -153,45 +83,46 @@ else icon_state = "access_control_off" -/obj/machinery/embedded_controller/radio/airlock/access_controller/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1) - ui = SSnanoui.try_update_ui(user, src, ui_key, ui, force_open) +/obj/machinery/embedded_controller/radio/airlock/access_controller/tgui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/tgui_state/state = GLOB.tgui_default_state) + ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) if(!ui) - ui = new(user, src, ui_key, "door_access_console.tmpl", name, 330, 220) + ui = new(user, src, ui_key, "AirlockAccessController", name, 470, 290, master_ui, state) ui.open() - ui.set_auto_update(1) -/obj/machinery/embedded_controller/radio/airlock/access_controller/ui_data(mob/user, ui_key = "main", datum/topic_state/state = GLOB.default_state) - var/data[0] +/obj/machinery/embedded_controller/radio/airlock/access_controller/tgui_data(mob/user) + var/list/data = list() - data = list( - "exterior_status" = program.memory["exterior_status"], - "interior_status" = program.memory["interior_status"], - "processing" = program.memory["processing"] - ) + data["exterior_status"] = program.memory["exterior_status"] + data["interior_status"] = program.memory["interior_status"] + data["processing"] = program.memory["processing"] return data -/obj/machinery/embedded_controller/radio/airlock/access_controller/Topic(href, href_list) +/obj/machinery/embedded_controller/radio/airlock/access_controller/tgui_act(action, params) if(..()) return - usr.set_machine(src) - src.add_fingerprint(usr) + add_fingerprint(usr) - var/clean = 0 - switch(href_list["command"]) //anti-HTML-hacking checks + var/clean = FALSE + + // Repeat the frontend check to make sure only allowed command are sent. You are only allowed to lock or cycle exterior if exterior is open + // Vice versa for internal + + switch(action) if("cycle_ext_door") - clean = 1 + clean = TRUE if("cycle_int_door") - clean = 1 - if("force_ext") - if(program.memory["interior_status"]["state"] == "closed") - clean = 1 - if("force_int") - if(program.memory["exterior_status"]["state"] == "closed") - clean = 1 + clean = TRUE + if("force_ext") // Cannot force exterior if interior open + if(program.memory["interior_status"]["state"] == "closed" && program.memory["exterior_status"]["state"] == "open") + clean = TRUE + if("force_int") // Cannot force interior if exterior open + if(program.memory["exterior_status"]["state"] == "closed" && program.memory["interior_status"]["state"] == "open") + clean = TRUE if(clean) - program.receive_user_command(href_list["command"]) + program.receive_user_command(action) + + return TRUE - return 1 diff --git a/code/game/machinery/embedded_controller/embedded_controller_base.dm b/code/game/machinery/embedded_controller/embedded_controller_base.dm index 2226f9f18fe..5e4f8b8ad3a 100644 --- a/code/game/machinery/embedded_controller/embedded_controller_base.dm +++ b/code/game/machinery/embedded_controller/embedded_controller_base.dm @@ -27,18 +27,15 @@ src.updateDialog() /obj/machinery/embedded_controller/attack_ghost(mob/user as mob) - src.ui_interact(user) + tgui_interact(user) /obj/machinery/embedded_controller/attack_ai(mob/user as mob) - src.ui_interact(user) + tgui_interact(user) /obj/machinery/embedded_controller/attack_hand(mob/user as mob) if(!user.IsAdvancedToolUser()) - return 0 - src.ui_interact(user) - -/obj/machinery/embedded_controller/ui_interact() - return + return FALSE + tgui_interact(user) /obj/machinery/embedded_controller/radio icon = 'icons/obj/airlock_machines.dmi' diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm index 9dabea08319..92bb26924e3 100644 --- a/code/game/objects/items/stacks/sheets/mineral.dm +++ b/code/game/objects/items/stacks/sheets/mineral.dm @@ -188,6 +188,9 @@ GLOBAL_LIST_INIT(sandbag_recipes, list ( \ ..() recipes = GLOB.diamond_recipes +/obj/item/stack/sheet/mineral/diamond/fifty + amount = 50 + /obj/item/stack/sheet/mineral/uranium name = "uranium" icon_state = "sheet-uranium" @@ -216,6 +219,9 @@ GLOBAL_LIST_INIT(sandbag_recipes, list ( \ ..() recipes = GLOB.plasma_recipes +/obj/item/stack/sheet/mineral/plasma/fifty + amount = 50 + /obj/item/stack/sheet/mineral/plasma/welder_act(mob/user, obj/item/I) if(I.use_tool(src, user, volume = I.tool_volume)) log_and_set_aflame(user, I) @@ -275,6 +281,9 @@ GLOBAL_LIST_INIT(sandbag_recipes, list ( \ materials = list(MAT_BANANIUM=MINERAL_MATERIAL_AMOUNT) point_value = 50 +/obj/item/stack/sheet/mineral/bananium/fifty + amount = 50 + /obj/item/stack/sheet/mineral/bananium/New(loc, amount=null) ..() recipes = GLOB.bananium_recipes @@ -289,6 +298,9 @@ GLOBAL_LIST_INIT(sandbag_recipes, list ( \ wall_allowed = FALSE //no tranquilite walls in code point_value = 50 +/obj/item/stack/sheet/mineral/tranquillite/fifty + amount = 50 + /obj/item/stack/sheet/mineral/tranquillite/New(loc, amount=null) ..() recipes = GLOB.tranquillite_recipes @@ -367,6 +379,9 @@ GLOBAL_LIST_INIT(plastitanium_recipes, list( origin_tech = "materials=6;abductor=1" sheettype = "abductor" +/obj/item/stack/sheet/mineral/abductor/fifty + amount = 50 + /obj/item/stack/sheet/mineral/abductor/New(loc, amount=null) recipes = GLOB.abductor_recipes ..() diff --git a/code/game/objects/items/stacks/stack_recipe.dm b/code/game/objects/items/stacks/stack_recipe.dm index 2a2e91ef599..51970297281 100644 --- a/code/game/objects/items/stacks/stack_recipe.dm +++ b/code/game/objects/items/stacks/stack_recipe.dm @@ -24,27 +24,27 @@ src.on_floor = on_floor src.window_checks = window_checks -/datum/stack_recipe/proc/post_build(var/obj/item/stack/S, var/obj/result) +/datum/stack_recipe/proc/post_build(obj/item/stack/S, obj/result) return /* Special Recipes */ /datum/stack_recipe/cable_restraints -/datum/stack_recipe/cable_restraints/post_build(var/obj/item/stack/S, var/obj/result) +/datum/stack_recipe/cable_restraints/post_build(obj/item/stack/S, obj/result) if(istype(result, /obj/item/restraints/handcuffs/cable)) result.color = S.color ..() /datum/stack_recipe/dangerous -/datum/stack_recipe/dangerous/post_build(/obj/item/stack/S, /obj/result) +/datum/stack_recipe/dangerous/post_build(obj/item/stack/S, obj/result) var/turf/targ = get_turf(usr) message_admins("[title] made by [key_name_admin(usr)](?) in [get_area(usr)] [ADMIN_COORDJMP(targ)]!",0,1) log_game("[title] made by [key_name_admin(usr)] at [get_area(usr)] [targ.x], [targ.y], [targ.z].") ..() /datum/stack_recipe/rods -/datum/stack_recipe/rods/post_build(var/obj/item/stack/S, var/obj/result) +/datum/stack_recipe/rods/post_build(obj/item/stack/S, obj/result) if(istype(result, /obj/item/stack/rods)) var/obj/item/stack/rods/R = result R.update_icon() diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index 850b452a529..007be9d3535 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -72,11 +72,17 @@ turf_type = /turf/simulated/floor/carpet resistance_flags = FLAMMABLE +/obj/item/stack/tile/carpet/twenty + amount = 20 + /obj/item/stack/tile/carpet/black name = "black carpet" icon_state = "tile-carpet-black" turf_type = /turf/simulated/floor/carpet/black +/obj/item/stack/tile/carpet/black/twenty + amount = 20 + //Plasteel /obj/item/stack/tile/plasteel name = "floor tiles" diff --git a/code/game/objects/items/weapons/fireworks.dm b/code/game/objects/items/weapons/fireworks.dm deleted file mode 100644 index 906c4f3fef7..00000000000 --- a/code/game/objects/items/weapons/fireworks.dm +++ /dev/null @@ -1,67 +0,0 @@ -/obj/item/firework - name = "fireworks" - icon = 'icons/obj/fireworks.dmi' - icon_state = "rocket_0" - var/litzor = 0 - var/datum/effect_system/sparkle_spread/S - -/obj/item/firework/attackby(obj/item/W,mob/user, params) - if(litzor) - return - if(is_hot(W)) - for(var/mob/M in viewers(user)) - to_chat(M, "[user] lits \the [src]") - litzor = 1 - icon_state = "rocket_1" - S = new() - S.set_up(5,0,src.loc) - sleep(30) - if(ismob(src.loc) || isobj(src.loc)) - S.attach(src.loc) - S.start() - qdel(src) - -/obj/item/sparkler - name = "sparkler" - icon = 'icons/obj/fireworks.dmi' - icon_state = "sparkler_0" - var/litzor = 0 - -/obj/item/sparkler/attackby(obj/item/W,mob/user, params) - if(litzor) - return - if(is_hot(W)) - for(var/mob/M in viewers(user)) - to_chat(M, "[user] lits \the [src]") - litzor = 1 - icon_state = "sparkler_1" - var/b = rand(5,9) - for(var/xy, xy<=b, xy++) - do_sparks(1, 0, loc) - sleep(10) - qdel(src) - -// TODO: Refactor this into a proper locker or something -// Or just axe the system. This code is 7 years old -/obj/crate/fireworks - name = "Fireworks!" - -/obj/crate/fireworks/New() - new /obj/item/sparkler(src) - new /obj/item/sparkler(src) - new /obj/item/sparkler(src) - new /obj/item/sparkler(src) - new /obj/item/sparkler(src) - new /obj/item/sparkler(src) - new /obj/item/sparkler(src) - new /obj/item/sparkler(src) - new /obj/item/firework(src) - new /obj/item/firework(src) - new /obj/item/firework(src) - new /obj/item/firework(src) - new /obj/item/firework(src) - new /obj/item/firework(src) - new /obj/item/firework(src) - new /obj/item/firework(src) - new /obj/item/firework(src) - new /obj/item/firework(src) diff --git a/code/game/objects/items/weapons/grenades/flashbang.dm b/code/game/objects/items/weapons/grenades/flashbang.dm index 13f9dd8f49d..06ec9cded0c 100644 --- a/code/game/objects/items/weapons/grenades/flashbang.dm +++ b/code/game/objects/items/weapons/grenades/flashbang.dm @@ -17,6 +17,10 @@ do_sparks(rand(5, 9), FALSE, src) playsound(T, 'sound/effects/bang.ogg', 100, TRUE) new /obj/effect/dummy/lighting_obj(T, light_color, range + 2, light_power, light_time) + // Blob damage + for(var/obj/structure/blob/B in hear(range + 1, T)) + var/damage = round(30 / (get_dist(B, T) + 1)) + B.take_damage(damage, BURN, "melee", FALSE) // Stunning & damaging mechanic bang(T, src, range) @@ -25,7 +29,6 @@ /** * Creates a flashing effect that blinds and deafens mobs within range * - * Also damages blobs * Arguments: * * T - The turf to flash * * A - The flashing atom @@ -34,10 +37,6 @@ * * bang - Whether to bang (deafen) */ /proc/bang(turf/T, atom/A, range = 7, flash = TRUE, bang = TRUE) - // Blob damage - for(var/obj/structure/blob/B in hear(range + 1, T)) - var/damage = round(30 / (get_dist(B, T) + 1)) - B.take_damage(damage, BURN, "melee", FALSE) // Flashing mechanic var/source_turf = get_turf(A) diff --git a/code/game/objects/random/random.dm b/code/game/objects/random/random.dm index 52b70590ee4..715c3754fc6 100644 --- a/code/game/objects/random/random.dm +++ b/code/game/objects/random/random.dm @@ -1,3 +1,4 @@ +// TODO: Refactor these into spawners /obj/random name = "Random Object" desc = "This item type is used to spawn random objects at round-start" diff --git a/code/game/objects/structures/spirit_board.dm b/code/game/objects/structures/spirit_board.dm index 47731fd48d3..8fa6e0d7dd1 100644 --- a/code/game/objects/structures/spirit_board.dm +++ b/code/game/objects/structures/spirit_board.dm @@ -5,7 +5,7 @@ icon_state = "spirit_board" density = 1 anchored = 0 - var/virgin = 1 + var/used = FALSE var/cooldown = 0 var/planchette = "A" var/lastuser = null @@ -28,8 +28,8 @@ if(!spirit_board_checks(M)) return 0 - if(virgin) - virgin = 0 + if(!used) + used = TRUE notify_ghosts("Someone has begun playing with a [src.name] in [get_area(src)]!", source = src) planchette = input("Choose the letter.", "Seance!") in list("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z") diff --git a/code/modules/admin/DB ban/functions.dm b/code/modules/admin/db_ban/functions.dm similarity index 100% rename from code/modules/admin/DB ban/functions.dm rename to code/modules/admin/db_ban/functions.dm diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm index d2c05ff4f6c..3069398f738 100644 --- a/code/modules/admin/verbs/debug.dm +++ b/code/modules/admin/verbs/debug.dm @@ -145,7 +145,11 @@ GLOBAL_PROTECT(AdminProcCallSpamPrevention) GLOB.LastAdminCalledTargetUID = target.UID() GLOB.AdminProcCaller = ckey //if this runtimes, too bad for you ++GLOB.AdminProcCallCount - . = world.WrapAdminProcCall(target, procname, arguments) + try + . = world.WrapAdminProcCall(target, procname, arguments) + catch + to_chat(usr, "Your proc call failed to execute, likely from runtimes. You should be out of safety mode. If not, god help you.") + if(--GLOB.AdminProcCallCount == 0) GLOB.AdminProcCaller = null diff --git a/code/modules/admin/verbs/vox_raiders.dm b/code/modules/admin/verbs/vox_raiders.dm index 048939a7c6d..c474cf785e2 100644 --- a/code/modules/admin/verbs/vox_raiders.dm +++ b/code/modules/admin/verbs/vox_raiders.dm @@ -18,7 +18,7 @@ GLOBAL_VAR_INIT(vox_tick, 1) equip_to_slot_or_del(new /obj/item/clothing/glasses/thermal/monocle(src), slot_glasses) // REPLACE WITH CODED VOX ALTERNATIVE. equip_to_slot_or_del(new /obj/item/chameleon(src), slot_l_store) - var/obj/item/gun/projectile/automatic/spikethrower/W = new(src) + var/obj/item/gun/energy/spikethrower/W = new(src) equip_to_slot_or_del(W, slot_r_hand) diff --git a/code/modules/arcade/mob_hunt/mob_datums.dm b/code/modules/arcade/mob_hunt/mob_datums.dm index 25a4569ede9..56a88d589ad 100644 --- a/code/modules/arcade/mob_hunt/mob_datums.dm +++ b/code/modules/arcade/mob_hunt/mob_datums.dm @@ -88,8 +88,9 @@ return 0 while(possible_areas.len) //randomly select an area from our possible_areas list to try spawning in, then remove it from possible_areas so it won't get picked over and over forever. - var/area/spawn_area = locate(pickweight(possible_areas)) - possible_areas -= spawn_area + var/spawn_area_path = pickweight(possible_areas) + var/area/spawn_area = locate(spawn_area_path) + possible_areas -= spawn_area_path if(!spawn_area) break //clear and generate a fresh list of turfs in the selected area, weighted based on white/black lists diff --git a/code/modules/client/client defines.dm b/code/modules/client/client_defines.dm similarity index 100% rename from code/modules/client/client defines.dm rename to code/modules/client/client_defines.dm diff --git a/code/modules/client/client procs.dm b/code/modules/client/client_procs.dm similarity index 100% rename from code/modules/client/client procs.dm rename to code/modules/client/client_procs.dm diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm index 67e001987d2..e52f5c303be 100644 --- a/code/modules/clothing/glasses/hud.dm +++ b/code/modules/clothing/glasses/hud.dm @@ -200,13 +200,24 @@ /obj/item/clothing/glasses/hud/skills name = "Skills HUD" desc = "A heads-up display capable of showing the employment history records of NT crew members." - icon_state = "material" + icon_state = "skill" item_state = "glasses" + sprite_sheets = list( + "Drask" = 'icons/mob/species/drask/eyes.dmi', + "Grey" = 'icons/mob/species/grey/eyes.dmi', + "Vox" = 'icons/mob/species/vox/eyes.dmi' + ) /obj/item/clothing/glasses/hud/skills/sunglasses name = "Skills HUD Sunglasses" desc = "Sunglasses with a build-in skills HUD, showing the employment history of nearby NT crew members." + icon_state = "sunhudskill" see_in_dark = 1 // None of these three can be converted to booleans. Do not try it. flash_protect = 1 tint = 1 prescription_upgradable = TRUE + sprite_sheets = list( + "Drask" = 'icons/mob/species/drask/eyes.dmi', + "Grey" = 'icons/mob/species/grey/eyes.dmi', + "Vox" = 'icons/mob/species/vox/eyes.dmi' + ) diff --git a/code/modules/economy/POS.dm b/code/modules/economy/POS.dm deleted file mode 100644 index 60b774a2a3d..00000000000 --- a/code/modules/economy/POS.dm +++ /dev/null @@ -1,537 +0,0 @@ -/************************ -* Point Of Sale -* -* Takes cash or credit. -*************************/ - -/line_item - parent_type = /datum - - var/name = "" - var/price = 0 // Per unit - var/units = 0 - -GLOBAL_VAR_INIT(current_pos_id, 1) -GLOBAL_VAR_INIT(pos_sales, 0) - -#define RECEIPT_HEADER {" - - - - -"} -#define POS_HEADER {" - - - - -"} - -#define POS_TAX_RATE 0.10 // 10% - -#define POS_SCREEN_LOGIN 0 -#define POS_SCREEN_ORDER 1 -#define POS_SCREEN_FINALIZE 2 -#define POS_SCREEN_PRODUCTS 3 -#define POS_SCREEN_IMPORT 4 -#define POS_SCREEN_EXPORT 5 -#define POS_SCREEN_SETTINGS 6 -/obj/machinery/pos - icon = 'icons/obj/machines/pos.dmi' - icon_state = "pos" - density = 0 - name = "point of sale" - desc = "Also known as a cash register, or, more commonly, \"robbery magnet\"." - - var/id = 0 - var/sales = 0 - var/department - var/mob/logged_in - var/datum/money_account/linked_account - - var/credits_held = 0 - var/credits_needed = 0 - - var/list/products = list() // name = /line_item - var/list/line_items = list() // # = /line_item - - var/screen=POS_SCREEN_LOGIN - -/obj/machinery/pos/New() - ..() - id = GLOB.current_pos_id++ - if(department) - linked_account = GLOB.department_accounts[department] - else - linked_account = GLOB.station_account - update_icon() - -/obj/machinery/pos/proc/AddToOrder(var/name, var/units) - if(!(name in products)) - return 0 - var/line_item/LI = products[name] - var/line_item/LIC = new - LIC.name=LI.name - LIC.price=LI.price - LIC.units=units - line_items.Add(LIC) - -/obj/machinery/pos/proc/RemoveFromOrder(var/order_id) - line_items.Cut(order_id,order_id+1) - -/obj/machinery/pos/proc/NewOrder() - line_items.Cut() - -/obj/machinery/pos/proc/PrintReceipt(var/order_id) - var/receipt = {"[RECEIPT_HEADER]
POINT OF SALE #[id]
- Paying to: [linked_account.owner_name]
- Cashier: [logged_in]
"} - if(myArea) - receipt += myArea.name - receipt += "
" - receipt += {"
-
[station_time_timestamp()], [GLOB.current_date_string]
- - - - - - - "} - var/subtotal=0 - for(var/i=1;i<=line_items.len;i++) - var/line_item/LI = line_items[i] - var/linetotal=LI.units*LI.price - receipt += "" - subtotal += linetotal - var/taxes = POS_TAX_RATE*subtotal - receipt += {" - - - - - - "} - receipt += {" - - "} - receipt += "
ItemAmountUnit PriceLine Total
[LI.name][LI.units]$[num2septext(LI.price)]$[num2septext(linetotal)]
SUBTOTAL$[num2septext(subtotal)]
TAXES$[num2septext(taxes)]
TOTAL$[num2septext(taxes+subtotal)] -
" - - playsound(loc, 'sound/goonstation/machines/printer_thermal.ogg', 50, 1) - var/obj/item/paper/P = new(loc) - P.name="Receipt #[id]-[++sales]" - P.info=receipt - - P = new(loc) - P.name="Receipt #[id]-[sales] (Cashier Copy)" - P.info=receipt - - -/obj/machinery/pos/proc/LoginScreen() - return "
Please swipe ID to log in.
" - -/obj/machinery/pos/proc/OrderScreen() - var/receipt = {"
- POS Info - POINT OF SALE #[id]
- Paying to: [linked_account.owner_name]
- Cashier: [logged_in]
"} - if(myArea) - receipt += myArea.name - receipt += "
" - receipt += {"
Order Data -
- - - - - - - - - "} - var/subtotal=0 - if(line_items.len>0) - for(var/i=1;i<=line_items.len;i++) - var/line_item/LI = line_items[i] - var/linetotal=LI.units*LI.price - receipt += {" - - - - - - "} - subtotal += linetotal - var/taxes = POS_TAX_RATE*subtotal - var/presets = "(No presets available)" - if(products.len>0) - presets = {"" - receipt += {" - - - - - - - - - - - "} - receipt += {" - - "} - receipt += {"
ItemAmountUnit PriceLine Total...
[LI.name][LI.units]$[num2septext(LI.price)]$[num2septext(linetotal)]×
[presets] units
SUBTOTAL$[num2septext(subtotal)]
TAXES$[num2septext(taxes)]
TOTAL$[num2septext(taxes+subtotal)] -
- - -
-
"} - return receipt - -/obj/machinery/pos/proc/ProductsScreen() - var/dat={"
Product List -
- - - - - - - - "} - for(var/i in products) - var/line_item/LI = products[i] - dat += {" - - - - - "} - dat += {"
ItemUnit Price# Sold...
[LI.name]$[num2septext(LI.price)][LI.units]×
- New Product:
-
- $
-
- Import | Export -
-
"} - return dat - -/obj/machinery/pos/proc/ExportScreen() - var/dat={"
Export Products as CSV - - OK -
"} - return dat - -/obj/machinery/pos/proc/ImportScreen() - var/dat={"
- Import Products as CSV -
- - -

Data must be in the form of a CSV, with no headers or quotation marks.

-

First column must be product names, second must be prices as an unformatted number (####.##)

-

Deviations from this format will result in your import being rejected.

- -
-
"} - return dat - -/obj/machinery/pos/proc/FinalizeScreen() - return "
Waiting for Credit
Cancel
" - -/obj/machinery/pos/proc/SettingsScreen() - var/dat={"
- -
- Account Settings -
- Payable Account: -
-
-
- Locality Settings -
- Tax Rate: % (LOCKED) -
-
- -
"} - return dat - -/obj/machinery/pos/update_icon() - overlays = 0 - if(stat & (NOPOWER|BROKEN)) return - if(logged_in) - overlays += "pos-working" - else - overlays += "pos-standby" - -/obj/machinery/pos/attack_hand(var/mob/user) - user.set_machine(src) - var/logindata="" - if(logged_in) - logindata={"[logged_in.name]"} - var/dat = POS_HEADER + {" - "} - switch(screen) - if(POS_SCREEN_LOGIN) dat += LoginScreen() - if(POS_SCREEN_ORDER) dat += OrderScreen() - if(POS_SCREEN_FINALIZE) dat += FinalizeScreen() - if(POS_SCREEN_PRODUCTS) dat += ProductsScreen() - if(POS_SCREEN_EXPORT) dat += ExportScreen() - if(POS_SCREEN_IMPORT) dat += ImportScreen() - if(POS_SCREEN_SETTINGS) dat += SettingsScreen() - - dat += "" - // END AUTOFIX - user << browse(dat, "window=pos") - onclose(user, "pos") - return - -/obj/machinery/pos/proc/say(var/text) - src.visible_message("[bicon(src)] [name] states, \"[text]\"") - -/obj/machinery/pos/Topic(var/href, var/list/href_list) - if(..(href,href_list)) return - if("logout" in href_list) - if(alert(src, "You sure you want to log out?", "Confirm", "Yes", "No")!="Yes") return - logged_in=null - screen=POS_SCREEN_LOGIN - update_icon() - src.attack_hand(usr) - return - if(usr != logged_in) - to_chat(usr, "[logged_in.name] is already logged in. You cannot use this machine until they log out.") - return - if("act" in href_list) - switch(href_list["act"]) - if("Reset") - NewOrder() - screen=POS_SCREEN_ORDER - if("Finalize Sale") - var/subtotal=0 - if(line_items.len>0) - for(var/i=1;i<=line_items.len;i++) - var/line_item/LI = line_items[i] - subtotal += LI.units*LI.price - var/taxes = POS_TAX_RATE*subtotal - credits_needed=taxes+subtotal - say("Your total is $[num2septext(credits_needed)]. Please insert credit chips or swipe your ID.") - screen=POS_SCREEN_FINALIZE - if("Add Product") - var/line_item/LI = new - LI.name=sanitize(href_list["name"]) - LI.price=text2num(href_list["price"]) - products["[products.len+1]"]=LI - if("Add to Order") - AddToOrder(href_list["preset"],text2num(href_list["units"])) - if("Add Products") - for(var/list/line in splittext(href_list["csv"],"\n")) - var/list/cells = splittext(line,",") - if(cells.len<2) - to_chat(usr, "The CSV must have at least two columns: Product Name, followed by Price (as a number).") - src.attack_hand(usr) - return - var/line_item/LI = new - LI.name=sanitize(cells[1]) - LI.price=text2num(cells[2]) - products["[products.len+1]"]=LI - if("Export Products") - screen=POS_SCREEN_EXPORT - if("Import Products") - screen=POS_SCREEN_IMPORT - if("Save Settings") - var/datum/money_account/new_linked_account = get_money_account(text2num(href_list["payableto"]),z) - if(!new_linked_account) - to_chat(usr, "Unable to link new account.") - else - linked_account = new_linked_account - screen=POS_SCREEN_SETTINGS - else if("screen" in href_list) - screen=text2num(href_list["screen"]) - else if("rmproduct" in href_list) - products.Remove(href_list["rmproduct"]) - else if("removefromorder" in href_list) - RemoveFromOrder(text2num(href_list["removefromorder"])) - else if("setunits" in href_list) - var/lid = text2num(href_list["setunits"]) - var/newunits = input(usr,"Enter the units sold.") as num - if(!newunits) return - var/line_item/LI = line_items[lid] - LI.units = newunits - line_items[lid]=LI - else if("setpname" in href_list) - var/newtext = sanitize(input(usr,"Enter the product's name.")) - if(!newtext) return - var/pid = href_list["setpname"] - var/line_item/LI = products[pid] - LI.name = newtext - products[pid]=LI - else if("setprice" in href_list) - var/newprice = input(usr,"Enter the product's price.") as num - if(!newprice) return - var/pid = href_list["setprice"] - var/line_item/LI = products[pid] - LI.price = newprice - products[pid]=LI - src.attack_hand(usr) - -/obj/machinery/pos/attackby(var/atom/movable/A, var/mob/user, params) - if(istype(A,/obj/item/card/id)) - var/obj/item/card/id/I = A - if(!logged_in) - user.visible_message("The machine beeps, and logs you in","You hear a beep.") - logged_in = user - screen=POS_SCREEN_ORDER - update_icon() - src.attack_hand(user) //why'd you use usr nexis, why - return - else - if(!linked_account) - visible_message("The machine buzzes, and flashes \"NO LINKED ACCOUNT\" on the screen.","You hear a buzz.") - flick(src,"pos-error") - return - if(screen!=POS_SCREEN_FINALIZE) - visible_message("The machine buzzes.","You hear a buzz.") - flick(src,"pos-error") - return - var/datum/money_account/acct = get_card_account(I) - if(!acct) - visible_message("The machine buzzes, and flashes \"NO ACCOUNT\" on the screen.","You hear a buzz.") - flick(src,"pos-error") - return - if(credits_needed > acct.money) - visible_message("The machine buzzes, and flashes \"NOT ENOUGH FUNDS\" on the screen.","You hear a buzz.") - flick(src,"pos-error") - return - visible_message("The machine beeps, and begins printing a receipt","You hear a beep.") - PrintReceipt() - NewOrder() - acct.charge(credits_needed,linked_account,"Purchase at POS #[id].") - credits_needed=0 - screen=POS_SCREEN_ORDER - else if(istype(A, /obj/item/stack/spacecash)) - if(!linked_account) - visible_message("The machine buzzes, and flashes \"NO LINKED ACCOUNT\" on the screen.","You hear a buzz.") - flick(src,"pos-error") - return - if(!logged_in || screen!=POS_SCREEN_FINALIZE) - visible_message("The machine buzzes.","You hear a buzz.") - flick(src,"pos-error") - return - var/obj/item/stack/spacecash/C = A - credits_held += C.amount - if(credits_held >= credits_needed) - visible_message("The machine beeps, and begins printing a receipt","You hear a beep and the sound of paper being shredded.") - PrintReceipt() - NewOrder() - credits_held -= credits_needed - credits_needed=0 - screen=POS_SCREEN_ORDER - if(credits_held) - new /obj/item/stack/spacecash(loc, credits_held) - credits_held=0 - return - return ..() diff --git a/code/modules/events/aurora_caelus.dm b/code/modules/events/aurora_caelus.dm deleted file mode 100644 index acd10288d71..00000000000 --- a/code/modules/events/aurora_caelus.dm +++ /dev/null @@ -1,55 +0,0 @@ -/datum/event/aurora_caelus - announceWhen = 5 - startWhen = 1 - endWhen = 50 - var/list/aurora_colors = list("#A2FF80", "#A2FF8B", "#A2FF96", "#A2FFA5", "#A2FFB6", "#A2FFC7", "#A2FFDE") - var/aurora_progress = 0 //this cycles from 1 to 7, slowly changing colors from gentle green to gentle blue - -/datum/event/aurora_caelus/announce() - GLOB.event_announcement.Announce("[station_name()]: A harmless cloud of ions is approaching your station, and will exhaust their energy battering the hull. \ -Nanotrasen has approved a short break for all employees to relax and observe this very rare event. \ -During this time, starlight will be bright but gentle, shifting between quiet green and blue colors. \ -Any staff who would like to view these lights for themselves may proceed to the area nearest to them with viewing ports to open space. \ -We hope you enjoy the lights.", "Harmless ions approaching", new_sound = 'sound/misc/notice2.ogg', from = "Nanotrasen Meteorology Division") - for(var/V in GLOB.player_list) - var/mob/M = V - if((M.client.prefs.toggles & SOUND_MIDI) && is_station_level(M.z)) - M.playsound_local(null, 'sound/ambience/aurora_caelus.ogg', 20, FALSE, pressure_affected = FALSE) - -/datum/event/aurora_caelus/start() - for(var/area in GLOB.all_areas) - var/area/A = area - if(initial(A.dynamic_lighting) == DYNAMIC_LIGHTING_IFSTARLIGHT) - for(var/turf/space/S in A) - S.set_light(S.light_range * 3, S.light_power * 0.5) - -/datum/event/aurora_caelus/tick() - if(aurora_progress >= aurora_colors.len) - return - if(activeFor % 5 == 0) - aurora_progress++ - var/aurora_color = aurora_colors[aurora_progress] - for(var/area in GLOB.all_areas) - var/area/A = area - if(initial(A.dynamic_lighting) == DYNAMIC_LIGHTING_IFSTARLIGHT) - for(var/turf/space/S in A) - S.set_light(l_color = aurora_color) - -/datum/event/aurora_caelus/end() - for(var/area in GLOB.all_areas) - var/area/A = area - if(initial(A.dynamic_lighting) == DYNAMIC_LIGHTING_IFSTARLIGHT) - for(var/turf/space/S in A) - fade_to_black(S) - GLOB.event_announcement.Announce("The Aurora Caelus event is now ending. Starlight conditions will slowly return to normal. \ -When this has concluded, please return to your workplace and continue work as normal. \ -Have a pleasant shift, [station_name()], and thank you for watching with us.", -"Harmless ions dissipating", new_sound = 'sound/misc/notice2.ogg', from = "Nanotrasen Meteorology Division") - -/datum/event/aurora_caelus/proc/fade_to_black(turf/space/S) - set waitfor = FALSE - var/new_light = config.starlight - while(S.light_range > new_light) - S.set_light(S.light_range - 0.2) - sleep(30) - S.set_light(new_light, 1, l_color = "") // we should be able to use `, null` as the last arg but BYOND is a piece of FUCKING SHIT AND SET_LIGHT DOESN'T WORK THAT WAY DESPITE EVERY FUCKING THING ABOUT IT INDICATING THAT IT GODDAMN WELL SHOULD AAAAAAAAAAAAAAAAA diff --git a/code/modules/events/event_container.dm b/code/modules/events/event_container.dm index ae7094f73ec..7b165f34213 100644 --- a/code/modules/events/event_container.dm +++ b/code/modules/events/event_container.dm @@ -139,7 +139,6 @@ GLOBAL_LIST_EMPTY(event_last_fired) new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Vermin Infestation",/datum/event/infestation, 100, list(ASSIGNMENT_JANITOR = 100)), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Sentience", /datum/event/sentience, 50), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Wallrot", /datum/event/wallrot, 0, list(ASSIGNMENT_ENGINEER = 30, ASSIGNMENT_GARDENER = 50)), - new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Aurora Caelus", /datum/event/aurora_caelus, 15, is_one_shot = TRUE), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Koi School", /datum/event/carp_migration/koi, 80,) ) diff --git a/code/modules/hydroponics/grown/cannabis.dm b/code/modules/hydroponics/grown/cannabis.dm index 06ba1fc7a66..96475111ce3 100644 --- a/code/modules/hydroponics/grown/cannabis.dm +++ b/code/modules/hydroponics/grown/cannabis.dm @@ -1,3 +1,5 @@ + + // Cannabis /obj/item/seeds/cannabis name = "pack of cannabis seeds" @@ -14,9 +16,7 @@ icon_dead = "cannabis-dead" // Same for the dead icon genes = list(/datum/plant_gene/trait/repeated_harvest) mutatelist = list(/obj/item/seeds/cannabis/rainbow, - /obj/item/seeds/cannabis/death, - /obj/item/seeds/cannabis/white, - /obj/item/seeds/cannabis/ultimate) + /obj/item/seeds/cannabis/white) reagents_add = list("thc" = 0.15, "cbd" = 0.15) @@ -27,7 +27,8 @@ species = "megacannabis" plantname = "Rainbow Weed" product = /obj/item/reagent_containers/food/snacks/grown/cannabis/rainbow - mutatelist = list() + mutatelist = list(/obj/item/seeds/cannabis/death, + /obj/item/seeds/cannabis/ultimate) reagents_add = list("lsd" = 0.15, "thc" = 0.15, "cbd" = 0.15) rarity = 40 @@ -49,7 +50,8 @@ species = "whitecannabis" plantname = "Lifeweed" product = /obj/item/reagent_containers/food/snacks/grown/cannabis/white - mutatelist = list() + mutatelist = list(/obj/item/seeds/cannabis/death, + /obj/item/seeds/cannabis/ultimate) reagents_add = list("omnizine" = 0.35, "thc" = 0.15, "cbd" = 0.15) rarity = 40 @@ -62,25 +64,24 @@ plantname = "Omega Weed" product = /obj/item/reagent_containers/food/snacks/grown/cannabis/ultimate mutatelist = list() - reagents_add = list("lsd" = 0.15, - "suicider" = 0.15, - "space_drugs" = 0.15, - "mercury" = 0.15, - "lithium" = 0.15, - "atropine" = 0.15, - "ephedrine" = 0.15, - "haloperidol" = 0.15, - "methamphetamine" = 0.15, - "thc" = 0.15, - "cbd" = 0.15, - "psilocybin" = 0.15, - "hairgrownium" = 0.15, - "ectoplasm" = 0.15, - "bath_salts" = 0.15, - "itching_powder" = 0.15, - "crank" = 0.15, - "krokodil" = 0.15, - "histamine" = 0.15) + reagents_add = list("lsd" = 0.05, + "suicider" = 0.05, + "space_drugs" = 0.05, + "mercury" = 0.05, + "lithium" = 0.05, + "ephedrine" = 0.05, + "haloperidol" = 0.05, + "methamphetamine" = 0.05, + "thc" = 0.05, + "cbd" = 0.05, + "psilocybin" = 0.05, + "hairgrownium" = 0.05, + "ectoplasm" = 0.05, + "bath_salts" = 0.05, + "itching_powder" = 0.05, + "crank" = 0.05, + "krokodil" = 0.05, + "histamine" = 0.05) rarity = 69 @@ -124,5 +125,4 @@ name = "omega cannibas leaf" desc = "You feel dizzy looking at it. What the fuck?" icon_state = "ocannabis" - volume = 420 wine_power = 0.9 diff --git a/code/modules/mining/minebot.dm b/code/modules/mining/minebot.dm index dbaa24fef34..889f2012d1e 100644 --- a/code/modules/mining/minebot.dm +++ b/code/modules/mining/minebot.dm @@ -336,6 +336,8 @@ M.move_to_delay = initial(M.move_to_delay) + base_speed_add if(M.stored_gun) M.stored_gun.overheat_time += base_cooldown_add + if(M.mind) + M.mind.offstation_role = TRUE /**********************Mining drone cube**********************/ diff --git a/code/modules/mob/living/carbon/human/say.dm b/code/modules/mob/living/carbon/human/say.dm index 957b0828725..3a2b646e510 100644 --- a/code/modules/mob/living/carbon/human/say.dm +++ b/code/modules/mob/living/carbon/human/say.dm @@ -9,7 +9,7 @@ /mob/living/carbon/human/proc/forcesay(list/append) if(stat == CONSCIOUS) if(client) - var/virgin = 1 //has the text been modified yet? + var/modified = FALSE //has the text been modified yet? var/temp = winget(client, "input", "text") if(findtextEx(temp, "Say \"", 1, 7) && length(temp) > 5) //case sensitive means @@ -17,11 +17,11 @@ if(findtext(trim_left(temp), ":", 6, 7)) //dept radio temp = copytext(trim_left(temp), 8) - virgin = 0 + modified = TRUE - if(virgin) + if(!modified) temp = copytext(trim_left(temp), 6) //normal speech - virgin = 0 + modified = TRUE while(findtext(trim_left(temp), ":", 1, 2)) //dept radio again (necessary) temp = copytext(trim_left(temp), 3) diff --git a/code/modules/mob/living/silicon/pai/life.dm b/code/modules/mob/living/silicon/pai/life.dm index 321362217a1..5520afe0cea 100644 --- a/code/modules/mob/living/silicon/pai/life.dm +++ b/code/modules/mob/living/silicon/pai/life.dm @@ -7,12 +7,12 @@ silence_time = null to_chat(src, "Communication circuit reinitialized. Speech and messaging functionality restored.") - if(cable) - if(get_dist(src, cable) > 1) - var/turf/T = get_turf_or_move(loc) - for(var/mob/M in viewers(T)) - M.show_message("The data cable rapidly retracts back into its spool.", 3, "You hear a click and the sound of wire spooling rapidly.", 2) - QDEL_NULL(cable) + if(installed_software["doorjack"]) + var/datum/pai_software/door_jack/DJ = installed_software["doorjack"] + if(DJ.cable) + if(get_dist(src, DJ.cable) > 1) + visible_message("The data cable connected to [src] rapidly retracts back into its spool!") + QDEL_NULL(DJ.cable) /mob/living/silicon/pai/updatehealth(reason = "none given") if(status_flags & GODMODE) diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm index 0a4e4cee898..a0edbc01c07 100644 --- a/code/modules/mob/living/silicon/pai/pai.dm +++ b/code/modules/mob/living/silicon/pai/pai.dm @@ -9,11 +9,8 @@ pass_flags = PASSTABLE density = 0 holder_type = /obj/item/holder/pai - var/network = "SS13" - var/obj/machinery/camera/current = null var/ram = 100 // Used as currency to purchase different abilities - var/list/software = list() var/userDNA // The DNA string of our assigned user var/obj/item/paicard/card // The card we inhabit var/obj/item/radio/radio // Our primary radio @@ -42,9 +39,6 @@ ) - - var/obj/item/pai_cable/cable // The cable we produce and use when door or camera jacking - var/master // Name of the one who commands us var/master_dna // DNA string for owner verification // Keeping this separate from the laws var, it should be much more difficult to modify @@ -64,17 +58,11 @@ var/secHUD = 0 // Toggles whether the Security HUD is active or not var/medHUD = 0 // Toggles whether the Medical HUD is active or not - var/medical_cannotfind = 0 - var/datum/data/record/medicalActive1 // Datacore record declarations for record software - var/datum/data/record/medicalActive2 + /// Currently active software + var/datum/pai_software/active_software - var/security_cannotfind = 0 - var/datum/data/record/securityActive1 // Could probably just combine all these into one - var/datum/data/record/securityActive2 - - var/obj/machinery/door/hackdoor // The airlock being hacked - var/hackprogress = 0 // Possible values: 0 - 100, >= 100 means the hack is complete and will be reset upon next check - var/hack_aborted = 0 + /// List of all installed software + var/list/datum/pai_software/installed_software = list() var/obj/item/integrated_radio/signal/sradio // AI's signaller @@ -109,20 +97,20 @@ //PDA pda = new(src) - spawn(5) - pda.ownjob = "Personal Assistant" - pda.owner = text("[]", src) - pda.name = pda.owner + " (" + pda.ownjob + ")" - var/datum/data/pda/app/messenger/M = pda.find_program(/datum/data/pda/app/messenger) - M.toff = 1 - ..() + pda.ownjob = "Personal Assistant" + pda.owner = "[src]" + pda.name = "[pda.owner] ([pda.ownjob])" + var/datum/data/pda/app/messenger/M = pda.find_program(/datum/data/pda/app/messenger) + M.toff = TRUE -/mob/living/silicon/pai/Destroy() - medicalActive1 = null - medicalActive2 = null - securityActive1 = null - securityActive2 = null - return ..() + // Software modules. No these var names have nothing to do with photoshop + for(var/PS in subtypesof(/datum/pai_software)) + var/datum/pai_software/PSD = new PS(src) + if(PSD.default) + installed_software[PSD.id] = PSD + + active_software = installed_software["mainmenu"] // Default us to the main menu + ..() /mob/living/silicon/pai/can_unbuckle() return FALSE @@ -159,12 +147,6 @@ for(var/obj/effect/proc_holder/P in proc_holder_list) statpanel("[P.panel]","",P) -/mob/living/silicon/pai/check_eye(var/mob/user as mob) - if(!current) - return null - user.reset_perspective(current) - return 1 - /mob/living/silicon/pai/blob_act() if(stat != DEAD) adjustBruteLoss(60) @@ -229,7 +211,7 @@ return -// See software.dm for Topic() +// See software.dm for tgui_act() /mob/living/silicon/pai/attack_animal(mob/living/simple_animal/M) . = ..() @@ -238,78 +220,6 @@ add_attack_logs(M, src, "Animal attacked for [damage] damage") adjustBruteLoss(damage) -/mob/living/silicon/pai/proc/switchCamera(var/obj/machinery/camera/C) - usr:cameraFollow = null - if(!C) - unset_machine() - reset_perspective(null) - return 0 - if(stat == 2 || !C.status || !(network in C.network)) return 0 - - // ok, we're alive, camera is good and in our network... - - set_machine(src) - src:current = C - reset_perspective(C) - return 1 - -/mob/living/silicon/pai/verb/reset_record_view() - set category = "pAI Commands" - set name = "Reset Records Software" - - securityActive1 = null - securityActive2 = null - security_cannotfind = 0 - medicalActive1 = null - medicalActive2 = null - medical_cannotfind = 0 - SSnanoui.update_uis(src) - to_chat(usr, "You reset your record-viewing software.") - -/mob/living/silicon/pai/cancel_camera() - set category = "pAI Commands" - set name = "Cancel Camera View" - reset_perspective(null) - unset_machine() - src:cameraFollow = null - -//Addition by Mord_Sith to define AI's network change ability -/* -/mob/living/silicon/pai/proc/pai_network_change() - set category = "pAI Commands" - set name = "Change Camera Network" - reset_perspective(null) - unset_machine() - src:cameraFollow = null - var/cameralist[0] - - if(usr.stat == 2) - to_chat(usr, "You can't change your camera network because you are dead!") - return - - for(var/obj/machinery/camera/C in Cameras) - if(!C.status) - continue - else - if(C.network != "CREED" && C.network != "thunder" && C.network != "RD" && C.network != "toxins" && C.network != "Prison") COMPILE ERROR! This will have to be updated as camera.network is no longer a string, but a list instead - cameralist[C.network] = C.network - - network = input(usr, "Which network would you like to view?") as null|anything in cameralist - to_chat(src, "Switched to [network] camera network.") -//End of code by Mord_Sith -*/ - - -/* -// Debug command - Maybe should be added to admin verbs later -/mob/verb/makePAI(var/turf/t in view()) - var/obj/item/paicard/card = new(t) - var/mob/living/silicon/pai/pai = new(card) - pai.key = key - card.setPersonality(pai) - -*/ - // Procs/code after this point is used to convert the stationary pai item into a // mobile pai mob. This also includes handling some of the general shit that can occur // to it. Really this deserves its own file, but for the moment it can sit here. ~ Z diff --git a/code/modules/mob/living/silicon/pai/software.dm b/code/modules/mob/living/silicon/pai/software.dm index 574dcda3230..ecc177a641c 100644 --- a/code/modules/mob/living/silicon/pai/software.dm +++ b/code/modules/mob/living/silicon/pai/software.dm @@ -10,113 +10,41 @@ GLOBAL_LIST_INIT(pai_emotions, list( "What" = 9 )) - GLOBAL_LIST_EMPTY(pai_software_by_key) -GLOBAL_LIST_EMPTY(default_pai_software) - -/mob/living/silicon/pai/New() - ..() - software = GLOB.default_pai_software.Copy() /mob/living/silicon/pai/verb/paiInterface() set category = "pAI Commands" set name = "Software Interface" - ui_interact(src) + tgui_interact(src) -/mob/living/silicon/pai/ui_interact(mob/user, ui_key = "main", datum/nanoui/ui = null, force_open = 1, datum/topic_state/state = GLOB.self_state) - if(ui_key != "main") - var/datum/pai_software/S = software[ui_key] - if(S && !S.toggle) - ui = SSnanoui.try_update_ui(user, src, S.id, ui, force_open) - if(!ui) - ui = new(user, src, S.id, S.template_file, S.ui_title, S.ui_width, S.ui_height, state = state) - ui.open() - if(S.autoupdate) - ui.set_auto_update(1) - else - if(ui) - ui.set_status(STATUS_CLOSE, 0) - return - - ui = SSnanoui.try_update_ui(user, src, ui_key, ui, force_open) +/mob/living/silicon/pai/tgui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, datum/tgui/master_ui = null, datum/tgui_state/state = GLOB.tgui_self_state) + ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) if(!ui) - ui = new(user, src, ui_key, "pai_interface.tmpl", "pAI Software Interface", 450, 600, state = state) + ui = new(user, src, ui_key, "PAI", name, 600, 650, master_ui, state) ui.open() - ui.set_auto_update(1) -/mob/living/silicon/pai/ui_data(mob/user, ui_key = "main", datum/topic_state/state = GLOB.self_state) - var/data[0] - - if(ui_key != "main") - var/datum/pai_software/S = software[ui_key] - if(S && !S.toggle) - return S.on_ui_data(user, state) - log_runtime(EXCEPTION("Unrecognized/invalid pAI UI state '[ui_key]'"), src) - return - // Software we have bought - var/bought_software[0] - // Software we have not bought - var/not_bought_software[0] - - for(var/key in GLOB.pai_software_by_key) - var/datum/pai_software/S = GLOB.pai_software_by_key[key] - var/software_data[0] - software_data["name"] = S.name - software_data["id"] = S.id - if(key in software) - software_data["on"] = S.is_active(src) - bought_software[++bought_software.len] = software_data - else - software_data["ram"] = S.ram_cost - not_bought_software[++not_bought_software.len] = software_data - - data["bought"] = bought_software - data["not_bought"] = not_bought_software - data["available_ram"] = ram - - // Emotions - var/emotions[0] - for(var/name in GLOB.pai_emotions) - var/emote[0] - emote["name"] = name - emote["id"] = GLOB.pai_emotions[name] - emotions[++emotions.len] = emote - - data["emotions"] = emotions - data["current_emotion"] = card.current_emotion +/mob/living/silicon/pai/tgui_data(mob/user) + var/list/data = list() + data["app_template"] = active_software.template_file + data["app_icon"] = active_software.ui_icon + data["app_title"] = active_software.name + data["app_data"] = active_software.get_app_data(user) return data -/mob/living/silicon/pai/Topic(href, href_list) +// Yes the stupid amount of args here is important, so we can proxy stuff to child UIs +/mob/living/silicon/pai/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state) if(..()) - return 1 + return - if(href_list["software"]) - var/soft = href_list["software"] - var/datum/pai_software/S = software[soft] - if(S.toggle) - S.toggle(src) + . = TRUE + + switch(action) + // This call is global to all templates, hence the prefix + if("MASTER_back") + active_software = installed_software["mainmenu"] + // Bail early + return else - ui_interact(src, ui_key = soft) - return 1 - - else if(href_list["stopic"]) - var/soft = href_list["stopic"] - var/datum/pai_software/S = software[soft] - if(S) - return S.Topic(href, href_list) - - else if(href_list["purchase"]) - var/soft = href_list["purchase"] - var/datum/pai_software/S = GLOB.pai_software_by_key[soft] - if(S && (ram >= S.ram_cost)) - ram -= S.ram_cost - software[S.id] = S - return 1 - - else if(href_list["image"]) - var/img = text2num(href_list["image"]) - if(1 <= img && img <= 9) - card.setEmotion(img) - return 1 + active_software.tgui_act(action, params, ui, state) diff --git a/code/modules/mob/living/silicon/pai/software/_base.dm b/code/modules/mob/living/silicon/pai/software/_base.dm new file mode 100644 index 00000000000..c761e900f46 --- /dev/null +++ b/code/modules/mob/living/silicon/pai/software/_base.dm @@ -0,0 +1,115 @@ +/** + * # pAI Software + * + * Datum module for pAI software + * + * Very similar to the PDA app datum, this determines what UI sub-template to use, + * as well as the RAM cost, and if it is toggle software (not a UI app) + * + */ +/datum/pai_software + /// Name for the software. This is used as the button text when buying or opening/toggling the software + var/name = "pAI software module" + /// RAM cost; pAIs start with 100 RAM, spending it on programs + var/ram_cost = 0 + /// ID for the software. This must be unique + var/id + // Toggled software should override toggle() and is_active() + // Non-toggled software should override get_app_data() and Topic() + /// Whether this software is a toggle or not + var/toggle_software = FALSE + /// Do we have this software installed by default + var/default = FALSE + /// Template for the TGUI file + var/template_file = "oops" + /// Icon for inside the UI + var/ui_icon = "file-code" + /// pAI which holds this software + var/mob/living/silicon/pai/pai_holder + +/** + * New handler + * + * Ensures that the pai_holder var is set to the pAI itself + * Arguments: + * * user - The pAI that this softawre is held by + */ +/datum/pai_software/New(mob/living/silicon/pai/user) + pai_holder = user + ..() + +/** + * Handler for the app's UI data + * + * This returns the list of the current app's data for the UI + * This will then be injected as a variable on the TGUI data called "app_data" + * + * Arguments: + * * user - The pAI that is using this app + */ +/datum/pai_software/proc/get_app_data(mob/living/silicon/pai/user) + return list() + +/** + * Handler for toggling toggle apps on and off + * + * This is invoked whenever you toggle a toggleable function + * Put your toggleable work in here + * + * Arguments: + * * user - The pAI that is using this toggle + */ +/datum/pai_software/proc/toggle(mob/living/silicon/pai/user) + return + +/** + * Helper for checking if a toggle is enabled or not + * + * Returns TRUE if the toggle software is active, FALSE if not + * + * Its like this instead of a simple `is_toggled` var because some toggles override eachother and this is easier + * + * Arguments: + * * user - The pAI that is using this app + */ +/datum/pai_software/proc/is_active(mob/living/silicon/pai/user) + return FALSE + +/** + * Helper proc so that pAIs can get the mob holding them + * + * This needs to exist because pAIs have many different locs + * (Held card, mob itself, in pocket, etc) + * + * Arguments: + * * inform - Boolean, should we inform the pAI if they fail to find a carrier + */ +/datum/pai_software/proc/get_holding_mob(inform = FALSE) + var/mob/living/M = pai_holder.loc + var/count = 0 + + // Find the carrier + while(!istype(M, /mob/living)) + if(!M || !M.loc || count > 6) + //For a runtime where M ends up in nullspace (similar to bluespace but less colourful) + if(inform) + to_chat(usr, "You are not being carried by anyone!") + return null + M = M.loc + count++ + + return M + +/** + * tgui_act sanity check helper + * + * Basically checks the existing href exploit stuff, as well as making sure the user using the UI is the pAI itself + */ +/datum/pai_software/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state) + if(..()) + return TRUE + + if(usr != pai_holder) + return TRUE + + return FALSE diff --git a/code/modules/mob/living/silicon/pai/software/pai_apps.dm b/code/modules/mob/living/silicon/pai/software/pai_apps.dm new file mode 100644 index 00000000000..e5c7b7ac725 --- /dev/null +++ b/code/modules/mob/living/silicon/pai/software/pai_apps.dm @@ -0,0 +1,388 @@ +// Main Menu // +/datum/pai_software/main_menu + name = "Main Menu" + id = "mainmenu" + default = TRUE + template_file = "pai_main_menu" + ui_icon = "home" + +/datum/pai_software/main_menu/get_app_data(mob/living/silicon/pai/user) + var/list/data = list() + data["available_ram"] = user.ram + + // Emotions + var/list/emotions = list() + for(var/name in GLOB.pai_emotions) + var/list/emote = list() + emote["name"] = name + emote["id"] = GLOB.pai_emotions[name] + emotions[++emotions.len] = emote + + data["emotions"] = emotions + data["current_emotion"] = user.card.current_emotion + + var/list/available_s = list() + for(var/s in GLOB.pai_software_by_key) + var/datum/pai_software/PS = GLOB.pai_software_by_key[s] + available_s += list(list("name" = PS.name, "key" = PS.id, "icon" = PS.ui_icon, "cost" = PS.ram_cost)) + + // Split to installed software and toggles for the UI + var/list/installed_s = list() + var/list/installed_t = list() + for(var/s in pai_holder.installed_software) + var/datum/pai_software/PS = pai_holder.installed_software[s] + if(PS.toggle_software) + installed_t += list(list("name" = PS.name, "key" = PS.id, "icon" = PS.ui_icon, "active" = PS.is_active(user))) + else + installed_s += list(list("name" = PS.name, "key" = PS.id, "icon" = PS.ui_icon)) + + data["available_software"] = available_s + data["installed_software"] = installed_s + data["installed_toggles"] = installed_t + + return data + +/datum/pai_software/main_menu/tgui_act(action, list/params) + if(..()) + return + + switch(action) + if("purchaseSoftware") + var/datum/pai_software/S = GLOB.pai_software_by_key[params["key"]] + if(S && (pai_holder.ram >= S.ram_cost)) + var/datum/pai_software/newPS = new S.type(pai_holder) + pai_holder.ram -= newPS.ram_cost + pai_holder.installed_software[newPS.id] = newPS + if("setEmotion") + var/emotion = clamp(text2num(params["emotion"]), 1, 9) + pai_holder.card.setEmotion(emotion) + if("startSoftware") + var/software_key = params["software_key"] + if(pai_holder.installed_software[software_key]) + pai_holder.active_software = pai_holder.installed_software[software_key] + if("setToggle") + var/toggle_key = params["toggle_key"] + if(pai_holder.installed_software[toggle_key]) + pai_holder.installed_software[toggle_key].toggle(pai_holder) + +// Directives // +/datum/pai_software/directives + name = "Directives" + id = "directives" + default = TRUE + template_file = "pai_directives" + ui_icon = "clipboard-list" + +/datum/pai_software/directives/get_app_data(mob/living/silicon/pai/user) + var/list/data = list() + + data["master"] = user.master + data["dna"] = user.master_dna + data["prime"] = user.pai_law0 + data["supplemental"] = user.pai_laws + + return data + +/datum/pai_software/directives/tgui_act(action, list/params) + if(..()) + return + + . = TRUE + + switch(action) + if("getdna") + var/mob/living/M = get_holding_mob() + if(!istype(M)) + return + + // Check the carrier + var/answer = alert(M, "[pai_holder] is requesting a DNA sample from you. Will you allow it to confirm your identity?", "[pai_holder] Check DNA", "Yes", "No") + if(answer == "Yes") + M.visible_message("[M] presses [M.p_their()] thumb against [pai_holder].", "You press your thumb against [pai_holder].") + var/datum/dna/dna = M.dna + to_chat(usr, "[M]'s UE string: [dna.unique_enzymes]") + if(dna.unique_enzymes == pai_holder.master_dna) + to_chat(usr, "DNA is a match to stored Master DNA.") + else + to_chat(usr, "DNA does not match stored Master DNA.") + else + to_chat(usr, "[M] does not seem like [M.p_they()] [M.p_are()] going to provide a DNA sample willingly.") + +// Crew Manifest // +/datum/pai_software/crew_manifest + name = "Crew Manifest" + ram_cost = 5 + id = "manifest" + template_file = "pai_manifest" + ui_icon = "users" + +/datum/pai_software/crew_manifest/get_app_data(mob/living/silicon/pai/user) + var/list/data = list() + + GLOB.data_core.get_manifest_json() + data["manifest"] = GLOB.PDA_Manifest + + return data + +// Med Records // +/datum/pai_software/med_records + name = "Medical Records" + ram_cost = 15 + id = "med_records" + template_file = "pai_medrecords" + ui_icon = "heartbeat" + /// Integrated medical records module to reduce duplicated code + var/datum/data/pda/app/crew_records/medical/integrated_records = new + +/datum/pai_software/med_records/get_app_data(mob/living/silicon/pai/user) + var/list/data = list() + // Just grab the stuff internally + integrated_records.update_ui(user, data) + return data + +/datum/pai_software/med_records/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state) + if(..()) + return + // Double proxy here + integrated_records.tgui_act(action, params, ui, state) + +// Sec Records // +/datum/pai_software/sec_records + name = "Security Records" + ram_cost = 15 + id = "sec_records" + template_file = "pai_secrecords" + ui_icon = "id-badge" + /// Integrated security records module to reduce duplicated code + var/datum/data/pda/app/crew_records/security/integrated_records = new + +/datum/pai_software/sec_records/get_app_data(mob/living/silicon/pai/user) + var/list/data = list() + // Just grab the stuff internally + integrated_records.update_ui(user, data) + return data + +/datum/pai_software/sec_records/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state) + if(..()) + return + // Double proxy here + integrated_records.tgui_act(action, params, ui, state) + +// Atmos Scan // +/datum/pai_software/atmosphere_sensor + name = "Atmosphere Sensor" + ram_cost = 5 + id = "atmos_sense" + template_file = "pai_atmosphere" + ui_icon = "fire" + /// Integrated PDA atmos scan module to reduce duplicated code + var/datum/data/pda/app/atmos_scanner/scanner = new + +/datum/pai_software/atmosphere_sensor/get_app_data(mob/living/silicon/pai/user) + var/list/data = list() + // Just grab the stuff internally + scanner.update_ui(user, data) + return data + +// Messenger // +/datum/pai_software/messenger + name = "Digital Messenger" + ram_cost = 5 + id = "messenger" + template_file = "pai_messenger" + ui_icon = "envelope" + +/datum/pai_software/messenger/get_app_data(mob/living/silicon/pai/user) + var/list/data = list() + + // Some safety checks + if(!user.pda) + CRASH("pAI found without PDA.") + + var/datum/data/pda/app/messenger/PM = user.pda.find_program(/datum/data/pda/app/messenger) + if(!PM) + CRASH("pAI PDA lacks a messenger program") + + // Grab the internal data + PM.update_ui(user, data) + + return data + +/datum/pai_software/messenger/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state) + if(..()) + return + + // Grab their messenger + var/datum/data/pda/app/messenger/PM = pai_holder.pda.find_program(/datum/data/pda/app/messenger) + // Double proxy here + PM.tgui_act(action, params, ui, state) + +// Radio +/datum/pai_software/radio_config + name = "Radio Configuration" + id = "radio" + default = TRUE + template_file = "pai_radio" + ui_icon = "broadcast-tower" + +/datum/pai_software/radio_config/get_app_data(mob/living/silicon/pai/user) + var/list/data = list() + data["frequency"] = user.radio.frequency + data["minFrequency"] = PUBLIC_LOW_FREQ + data["maxFrequency"] = PUBLIC_HIGH_FREQ + data["broadcasting"] = user.radio.broadcasting + return data + +/datum/pai_software/radio_config/tgui_act(action, list/params) + if(..()) + return + + switch(action) + if("toggleBroadcast") + // Just toggle it + pai_holder.radio.broadcasting = !pai_holder.radio.broadcasting + + if("freq") + var/new_frequency = sanitize_frequency(text2num(params["freq"]) * 10) + pai_holder.radio.set_frequency(new_frequency) + +// Signaler // +/datum/pai_software/signaler + name = "Remote Signaler" + ram_cost = 5 + id = "signaler" + template_file = "pai_signaler" + ui_icon = "rss" + +/datum/pai_software/signaler/get_app_data(mob/living/silicon/pai/user) + var/list/data = list() + + data["frequency"] = user.sradio.frequency + data["code"] = user.sradio.code + data["minFrequency"] = PUBLIC_LOW_FREQ + data["maxFrequency"] = PUBLIC_HIGH_FREQ + + return data + +/datum/pai_software/signaler/tgui_act(action, list/params) + if(..()) + return + + switch(action) + if("signal") + pai_holder.sradio.send_signal("ACTIVATE") + + if("freq") + var/new_frequency = sanitize_frequency(text2num(params["freq"]) * 10) + pai_holder.sradio.set_frequency(new_frequency) + + if("code") + pai_holder.sradio.code = clamp(text2num(params["code"]), 1, 100) + +// Door Jack // +/datum/pai_software/door_jack + name = "Door Jack" + ram_cost = 30 + id = "door_jack" + template_file = "pai_doorjack" + ui_icon = "door-open" + /// Progress on hacking the door + var/progress = 0 + /// Are we hacking? + var/hacking = FALSE + /// The cable being plugged into a door + var/obj/item/pai_cable/cable + /// The door being hacked + var/obj/machinery/door/hackdoor + +/datum/pai_software/door_jack/get_app_data(mob/living/silicon/pai/user) + var/list/data = list() + + data["cable"] = (cable != null) + data["machine"] = (cable?.machine != null) + data["inprogress"] = (hackdoor != null) + data["progress"] = progress + + return data + +/datum/pai_software/door_jack/tgui_act(action, list/params) + if(..()) + return + + switch(action) + if("jack") + if(cable && cable.machine) + hackdoor = cable.machine + if(hacking) + to_chat(usr, "You are already hacking that door!") + else + hacking = TRUE + INVOKE_ASYNC(src, /datum/pai_software/door_jack/.proc/hackloop) + if("cancel") + hackdoor = null + if("cable") + if(cable) + to_chat(usr, "You already have a cable deployed!") + return + var/turf/T = get_turf(pai_holder) + cable = new /obj/item/pai_cable(T) + pai_holder.visible_message("A port on [pai_holder] opens to reveal [cable], which promptly falls to the floor.") + +/** + * Door jack hack loop + * + * Self-contained proc for handling the hacking of a door. + * Invoked asyncly, but will only allow one instance at a time + */ +/datum/pai_software/door_jack/proc/hackloop() + var/obj/machinery/door/D = cable.machine + if(!istype(D)) + cleanup_hack() + return + while(progress < 100) + if(cable && cable.machine == D && cable.machine == hackdoor && get_dist(pai_holder, hackdoor) <= 1) + progress = min(progress + rand(1, 20), 100) + else + cleanup_hack() + return + if(progress >= 100) + D.open() + cleanup_hack() + return + sleep(1 SECONDS) // Update every second + +/** + * Door jack cleanup proc + * + * Self-contained proc for cleaning up failed hack attempts + */ +/datum/pai_software/door_jack/proc/cleanup_hack() + progress = 0 + hackdoor = null + cable.machine = null + QDEL_NULL(cable) + hacking = FALSE + +// Host Bioscan // +/datum/pai_software/host_scan + name = "Host Bioscan" + ram_cost = 5 + id = "bioscan" + template_file = "pai_bioscan" + ui_icon = "heartbeat" + +/datum/pai_software/host_scan/get_app_data(mob/living/silicon/pai/user) + var/list/data = list() + + var/mob/living/held = get_holding_mob(FALSE) + + if(isliving(held)) + data["holder"] = held.name + data["dead"] = (held.stat > UNCONSCIOUS) + data["health"] = held.health + data["brute"] = held.getBruteLoss() + data["oxy"] = held.getOxyLoss() + data["tox"] = held.getToxLoss() + data["burn"] = held.getFireLoss() + + return data diff --git a/code/modules/mob/living/silicon/pai/software/pai_toggles.dm b/code/modules/mob/living/silicon/pai/software/pai_toggles.dm new file mode 100644 index 00000000000..138fb06d710 --- /dev/null +++ b/code/modules/mob/living/silicon/pai/software/pai_toggles.dm @@ -0,0 +1,95 @@ +// Security Hud // +/datum/pai_software/sec_hud + name = "Security HUD" + ram_cost = 20 + id = "sec_hud" + ui_icon = "exclamation-triangle" + toggle_software = TRUE + +/datum/pai_software/sec_hud/toggle(mob/living/silicon/pai/user) + user.secHUD = !user.secHUD + user.remove_med_sec_hud() + if(user.secHUD) + user.add_sec_hud() + +/datum/pai_software/sec_hud/is_active(mob/living/silicon/pai/user) + return user.secHUD + +// Medical Hud // +/datum/pai_software/med_hud + name = "Medical HUD" + ram_cost = 20 + id = "med_hud" + ui_icon = "first-aid" + toggle_software = TRUE + +/datum/pai_software/med_hud/toggle(mob/living/silicon/pai/user) + user.medHUD = !user.medHUD + user.remove_med_sec_hud() + if(user.medHUD) + user.add_med_hud() + +/datum/pai_software/med_hud/is_active(mob/living/silicon/pai/user) + return user.medHUD + +// Universal Translator // +/datum/pai_software/translator + name = "Universal Translator" + ram_cost = 35 + id = "translator" + ui_icon = "language" + toggle_software = TRUE + +/datum/pai_software/translator/toggle(mob/living/silicon/pai/user) + // Galactic Common, Sol Common, Tradeband, Gutter and Trinary are added with New() and are therefore the current default, always active languages + user.translator_on = !user.translator_on + if(user.translator_on) + user.add_language("Sinta'unathi") + user.add_language("Siik'tajr") + user.add_language("Canilunzt") + user.add_language("Skrellian") + user.add_language("Vox-pidgin") + user.add_language("Rootspeak") + user.add_language("Chittin") + user.add_language("Bubblish") + user.add_language("Orluum") + user.add_language("Clownish") + user.add_language("Neo-Russkiya") + else + user.remove_language("Sinta'unathi") + user.remove_language("Siik'tajr") + user.remove_language("Canilunzt") + user.remove_language("Skrellian") + user.remove_language("Vox-pidgin") + user.remove_language("Rootspeak") + user.remove_language("Chittin") + user.remove_language("Bubblish") + user.remove_language("Orluum") + user.remove_language("Clownish") + user.remove_language("Neo-Russkiya") + +/datum/pai_software/translator/is_active(mob/living/silicon/pai/user) + return user.translator_on + +// FLashlight // +/datum/pai_software/flashlight + name = "Flashlight" + ram_cost = 5 + id = "flashlight" + ui_icon = "lightbulb" + toggle_software = TRUE + +/datum/pai_software/flashlight/toggle(mob/living/silicon/pai/user) + var/atom/movable/actual_location = istype(user.loc, /obj/item/paicard) ? user.loc : user + if(!user.flashlight_on) + actual_location.set_light(2) + user.card.set_light(2) + else + actual_location.set_light(0) + user.card.set_light(0) + + user.flashlight_on = !user.flashlight_on + +/datum/pai_software/flashlight/is_active(mob/living/silicon/pai/user) + return user.flashlight_on + diff --git a/code/modules/mob/living/silicon/pai/software_modules.dm b/code/modules/mob/living/silicon/pai/software_modules.dm deleted file mode 100644 index 7161919df7f..00000000000 --- a/code/modules/mob/living/silicon/pai/software_modules.dm +++ /dev/null @@ -1,624 +0,0 @@ -/datum/pai_software - // Name for the software. This is used as the button text when buying or opening/toggling the software - var/name = "pAI software module" - // RAM cost; pAIs start with 100 RAM, spending it on programs - var/ram_cost = 0 - // ID for the software. This must be unique - var/id = "" - // Whether this software is a toggle or not - // Toggled software should override toggle() and is_active() - // Non-toggled software should override on_ui_data() and Topic() - var/toggle = 1 - // Whether pAIs should automatically receive this module at no cost - var/default = 0 - - // Vars for pAI nanoUI handling - var/autoupdate = 0 - var/template_file = "oops" - var/ui_title = "somebody forgot to set this" - var/ui_width = 450 - var/ui_height = 600 - -/datum/pai_software/proc/on_ui_data(mob/living/silicon/pai/user, datum/topic_state/state = GLOB.self_state) - return list() - -/datum/pai_software/proc/toggle(mob/living/silicon/pai/user) - return - -/datum/pai_software/proc/is_active(mob/living/silicon/pai/user) - return 0 - -/datum/pai_software/directives - name = "Directives" - ram_cost = 0 - id = "directives" - toggle = 0 - default = 1 - - template_file = "pai_directives.tmpl" - ui_title = "pAI Directives" - autoupdate = 1 - -/datum/pai_software/directives/on_ui_data(mob/living/silicon/pai/user, datum/topic_state/state = GLOB.self_state) - var/data[0] - - data["master"] = user.master - data["dna"] = user.master_dna - data["prime"] = user.pai_law0 - data["supplemental"] = user.pai_laws - - return data - -/datum/pai_software/directives/Topic(href, href_list) - var/mob/living/silicon/pai/P = usr - if(!istype(P)) return - - if(href_list["getdna"]) - var/mob/living/M = P.loc - var/count = 0 - - // Find the carrier - while(!istype(M, /mob/living)) - if(!M || !M.loc || count > 6) - //For a runtime where M ends up in nullspace (similar to bluespace but less colourful) - to_chat(P, "You are not being carried by anyone!") - return 0 - M = M.loc - count++ - - // Check the carrier - var/answer = input(M, "[P] is requesting a DNA sample from you. Will you allow it to confirm your identity?", "[P] Check DNA", "No") in list("Yes", "No") - if(answer == "Yes") - var/turf/T = get_turf_or_move(P.loc) - for(var/mob/v in viewers(T)) - v.show_message("[M] presses [M.p_their()] thumb against [P].", 3, "[P] makes a sharp clicking sound as it extracts DNA material from [M].", 2) - var/datum/dna/dna = M.dna - to_chat(P, "

[M]'s UE string : [dna.unique_enzymes]

") - if(dna.unique_enzymes == P.master_dna) - to_chat(P, "DNA is a match to stored Master DNA.") - else - to_chat(P, "DNA does not match stored Master DNA.") - else - to_chat(P, "[M] does not seem like [M.p_they()] [M.p_are()] going to provide a DNA sample willingly.") - return 1 - -/datum/pai_software/radio_config - name = "Radio Configuration" - ram_cost = 0 - id = "radio" - toggle = 0 - default = 1 - - template_file = "pai_radio.tmpl" - ui_title = "Radio Configuration" - ui_width = 300 - ui_height = 150 - -/datum/pai_software/radio_config/on_ui_data(mob/living/silicon/pai/user, datum/topic_state/state = GLOB.self_state) - var/data[0] - - data["listening"] = user.radio.broadcasting - data["frequency"] = format_frequency(user.radio.frequency) - var/channels[0] - for(var/ch_name in user.radio.channels) - var/ch_stat = user.radio.channels[ch_name] - var/ch_dat[0] - ch_dat["name"] = ch_name - // FREQ_LISTENING is const in /obj/item/radio - ch_dat["listening"] = !!(ch_stat & user.radio.FREQ_LISTENING) - channels[++channels.len] = ch_dat - - data["channels"] = channels - - return data - -/datum/pai_software/radio_config/Topic(href, href_list) - var/mob/living/silicon/pai/P = usr - if(!istype(P)) return - - P.radio.Topic(href, href_list) - return 1 - -/datum/pai_software/crew_manifest - name = "Crew Manifest" - ram_cost = 5 - id = "manifest" - toggle = 0 - - autoupdate = 1 - template_file = "pai_manifest.tmpl" - ui_title = "Crew Manifest" - -/datum/pai_software/crew_manifest/on_ui_data(mob/living/silicon/pai/user, datum/topic_state/state = GLOB.self_state) - var/data[0] - - GLOB.data_core.get_manifest_json() - data["manifest"] = GLOB.PDA_Manifest - - return data - -/datum/pai_software/messenger - name = "Digital Messenger" - ram_cost = 5 - id = "messenger" - toggle = 0 - - autoupdate = 1 - template_file = "pai_messenger.tmpl" - ui_title = "Digital Messenger" - -/datum/pai_software/messenger/on_ui_data(mob/living/silicon/pai/user, datum/topic_state/state = GLOB.self_state) - var/data[0] - - if(!user.pda) - log_runtime(EXCEPTION("pAI found without PDA."), user) - return data - var/datum/data/pda/app/messenger/M = user.pda.find_program(/datum/data/pda/app/messenger) - if(!M) - log_runtime(EXCEPTION("pAI PDA lacks a messenger program"), user) - return data - - data["receiver_off"] = M.toff - data["ringer_off"] = M.notify_silent - data["current_ref"] = null - data["current_name"] = user.current_pda_messaging - - var/pdas[0] - if(!M.toff) - for(var/obj/item/pda/P in GLOB.PDAs) - var/datum/data/pda/app/messenger/PM = P.find_program(/datum/data/pda/app/messenger) - - if(P == user.pda || !PM || !PM.can_receive()) - continue - var/pda[0] - pda["name"] = "[P]" - pda["owner"] = "[P.owner]" - pda["ref"] = "\ref[P]" - if(P.owner == user.current_pda_messaging) - data["current_ref"] = "\ref[P]" - pdas[++pdas.len] = pda - - data["pdas"] = pdas - - var/messages[0] - if(user.current_pda_messaging) - for(var/index in M.tnote) - if(index["owner"] != user.current_pda_messaging) - continue - var/msg[0] - var/sent = index["sent"] - msg["sent"] = sent ? 1 : 0 - msg["target"] = index["owner"] - msg["message"] = index["message"] - messages[++messages.len] = msg - - data["messages"] = messages - - return data - -/datum/pai_software/messenger/Topic(href, href_list) - var/mob/living/silicon/pai/P = usr - if(!istype(P)) return - - if(!isnull(P.pda)) - var/datum/data/pda/app/messenger/M = P.pda.find_program(/datum/data/pda/app/messenger) - if(!M) - return - - if(href_list["toggler"]) - M.toff = href_list["toggler"] != "1" - return 1 - else if(href_list["ringer"]) - M.notify_silent = href_list["ringer"] != "1" - return 1 - else if(href_list["select"]) - var/s = href_list["select"] - if(s == "*NONE*") - P.current_pda_messaging = null - else - P.current_pda_messaging = s - return 1 - else if(href_list["target"]) - if(P.silence_time) - return alert("Communications circuits remain uninitialized.") - - var/target = locate(href_list["target"]) - M.create_message(P, target, 1) - return 1 - -/datum/pai_software/med_records - name = "Medical Records" - ram_cost = 15 - id = "med_records" - toggle = 0 - - autoupdate = 1 - template_file = "pai_medrecords.tmpl" - ui_title = "Medical Records" - - -/datum/pai_software/med_records/on_ui_data(mob/living/silicon/pai/user, datum/topic_state/state = GLOB.self_state) - var/data[0] - - var/records[0] - for(var/datum/data/record/general in sortRecord(GLOB.data_core.general)) - var/record[0] - record["name"] = general.fields["name"] - record["ref"] = "\ref[general]" - records[++records.len] = record - - data["records"] = records - - var/datum/data/record/G = user.medicalActive1 - var/datum/data/record/M = user.medicalActive2 - data["general"] = G ? G.fields : null - data["medical"] = M ? M.fields : null - data["could_not_find"] = user.medical_cannotfind - - return data - -/datum/pai_software/med_records/Topic(href, href_list) - var/mob/living/silicon/pai/P = usr - if(!istype(P)) return - - if(href_list["select"]) - var/datum/data/record/record = locate(href_list["select"]) - if(record) - var/datum/data/record/R = record - var/datum/data/record/M = null - if(!( GLOB.data_core.general.Find(R) )) - P.medical_cannotfind = 1 - else - P.medical_cannotfind = 0 - for(var/datum/data/record/E in GLOB.data_core.medical) - if((E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"])) - M = E - P.medicalActive1 = R - P.medicalActive2 = M - else - P.medical_cannotfind = 1 - return 1 - -/datum/pai_software/sec_records - name = "Security Records" - ram_cost = 15 - id = "sec_records" - toggle = 0 - - autoupdate = 1 - template_file = "pai_secrecords.tmpl" - ui_title = "Security Records" - - -/datum/pai_software/sec_records/on_ui_data(mob/living/silicon/pai/user, datum/topic_state/state = GLOB.self_state) - var/data[0] - - var/records[0] - for(var/datum/data/record/general in sortRecord(GLOB.data_core.general)) - var/record[0] - record["name"] = general.fields["name"] - record["ref"] = "\ref[general]" - records[++records.len] = record - - data["records"] = records - - var/datum/data/record/G = user.securityActive1 - var/datum/data/record/S = user.securityActive2 - data["general"] = G ? G.fields : null - data["security"] = S ? S.fields : null - data["could_not_find"] = user.security_cannotfind - - return data - -/datum/pai_software/sec_records/Topic(href, href_list) - var/mob/living/silicon/pai/P = usr - if(!istype(P)) return - - if(href_list["select"]) - var/datum/data/record/record = locate(href_list["select"]) - if(record) - var/datum/data/record/R = record - var/datum/data/record/S = null - if(!( GLOB.data_core.general.Find(R) )) - P.securityActive1 = null - P.securityActive2 = null - P.security_cannotfind = 1 - else - P.security_cannotfind = 0 - for(var/datum/data/record/E in GLOB.data_core.security) - if((E.fields["name"] == R.fields["name"] || E.fields["id"] == R.fields["id"])) - S = E - P.securityActive1 = R - P.securityActive2 = S - else - P.securityActive1 = null - P.securityActive2 = null - P.security_cannotfind = 1 - return 1 - -/datum/pai_software/door_jack - name = "Door Jack" - ram_cost = 30 - id = "door_jack" - toggle = 0 - - autoupdate = 1 - template_file = "pai_doorjack.tmpl" - ui_title = "Door Jack" - ui_width = 300 - ui_height = 150 - -/datum/pai_software/door_jack/on_ui_data(mob/living/silicon/pai/user, datum/topic_state/state = GLOB.self_state) - var/data[0] - - data["cable"] = user.cable != null - data["machine"] = user.cable && (user.cable.machine != null) - data["inprogress"] = user.hackdoor != null - data["progress_a"] = round(user.hackprogress / 10) - data["progress_b"] = user.hackprogress % 10 - data["aborted"] = user.hack_aborted - - return data - -/datum/pai_software/door_jack/Topic(href, href_list) - var/mob/living/silicon/pai/P = usr - if(!istype(P)) return - - if(href_list["jack"]) - if(P.cable && P.cable.machine) - P.hackdoor = P.cable.machine - P.hackloop() - return 1 - else if(href_list["cancel"]) - P.hackdoor = null - return 1 - else if(href_list["cable"]) - var/turf/T = get_turf_or_move(P.loc) - P.hack_aborted = 0 - P.cable = new /obj/item/pai_cable(T) - for(var/mob/M in viewers(T)) - M.show_message("A port on [P] opens to reveal [P.cable], which promptly falls to the floor.", 3, - "You hear the soft click of something light and hard falling to the ground.", 2) - return 1 - -/mob/living/silicon/pai/proc/hackloop() - var/obj/machinery/door/D = cable.machine - if(!istype(D)) - hack_aborted = 1 - hackprogress = 0 - cable.machine = null - hackdoor = null - return - while(hackprogress < 1000) - if(cable && cable.machine == D && cable.machine == hackdoor && get_dist(src, hackdoor) <= 1) - hackprogress = min(hackprogress+rand(1, 20), 1000) - else - hack_aborted = 1 - hackprogress = 0 - hackdoor = null - return - if(hackprogress >= 1000) - hackprogress = 0 - D.open() - cable.machine = null - return - sleep(10) // Update every second - -/datum/pai_software/atmosphere_sensor - name = "Atmosphere Sensor" - ram_cost = 5 - id = "atmos_sense" - toggle = 0 - - template_file = "pai_atmosphere.tmpl" - ui_title = "Atmosphere Sensor" - ui_width = 350 - ui_height = 300 - - -/datum/pai_software/atmosphere_sensor/on_ui_data(mob/living/silicon/pai/user, datum/topic_state/state = GLOB.self_state) - var/data[0] - - var/turf/T = get_turf_or_move(user.loc) - if(!T) - data["reading"] = 0 - data["pressure"] = 0 - data["temperature"] = 0 - data["temperatureC"] = 0 - data["gas"] = list() - else - var/datum/gas_mixture/env = T.return_air() - data["reading"] = 1 - data["pressure"] = env.return_pressure() - data["temperature"] = round(env.temperature) - data["temperatureC"] = round(env.temperature-T0C) - - var/t_moles = env.total_moles() - var/gases[0] - if(t_moles) - var/n2[0] - n2["name"] = "Nitrogen" - n2["percent"] = round((env.nitrogen/t_moles)*100) - var/o2[0] - o2["name"] = "Oxygen" - o2["percent"] = round((env.oxygen/t_moles)*100) - var/co2[0] - co2["name"] = "Carbon Dioxide" - co2["percent"] = round((env.carbon_dioxide/t_moles)*100) - var/plasma[0] - plasma["name"] = "Plasma" - plasma["percent"] = round((env.toxins/t_moles)*100) - var/other[0] - other["name"] = "Other" - other["percent"] = round(1-((env.oxygen/t_moles)+(env.nitrogen/t_moles)+(env.carbon_dioxide/t_moles)+(env.toxins/t_moles))) - gases[++gases.len] = n2 - gases[++gases.len] = o2 - gases[++gases.len] = co2 - gases[++gases.len] = plasma - gases[++gases.len] = other - data["gas"] = gases - - return data - -/datum/pai_software/sec_hud - name = "Security HUD" - ram_cost = 20 - id = "sec_hud" - -/datum/pai_software/sec_hud/toggle(mob/living/silicon/pai/user) - user.secHUD = !user.secHUD - user.remove_med_sec_hud() - if(user.secHUD) - user.add_sec_hud() - -/datum/pai_software/sec_hud/is_active(mob/living/silicon/pai/user) - return user.secHUD - -/datum/pai_software/med_hud - name = "Medical HUD" - ram_cost = 20 - id = "med_hud" - -/datum/pai_software/med_hud/toggle(mob/living/silicon/pai/user) - user.medHUD = !user.medHUD - user.remove_med_sec_hud() - if(user.medHUD) - user.add_med_hud() - -/datum/pai_software/med_hud/is_active(mob/living/silicon/pai/user) - return user.medHUD - -/datum/pai_software/translator - name = "Universal Translator" - ram_cost = 35 - id = "translator" - -/datum/pai_software/translator/toggle(mob/living/silicon/pai/user) - // Galactic Common, Sol Common, Tradeband, Gutter and Trinary are added with New() and are therefore the current default, always active languages - user.translator_on = !user.translator_on - if(user.translator_on) - user.add_language("Sinta'unathi") - user.add_language("Siik'tajr") - user.add_language("Canilunzt") - user.add_language("Skrellian") - user.add_language("Vox-pidgin") - user.add_language("Rootspeak") - user.add_language("Chittin") - user.add_language("Bubblish") - user.add_language("Orluum") - user.add_language("Clownish") - user.add_language("Neo-Russkiya") - else - user.remove_language("Sinta'unathi") - user.remove_language("Siik'tajr") - user.remove_language("Canilunzt") - user.remove_language("Skrellian") - user.remove_language("Vox-pidgin") - user.remove_language("Rootspeak") - user.remove_language("Chittin") - user.remove_language("Bubblish") - user.remove_language("Orluum") - user.remove_language("Clownish") - user.remove_language("Neo-Russkiya") - -/datum/pai_software/translator/is_active(mob/living/silicon/pai/user) - return user.translator_on - -/datum/pai_software/signaller - name = "Remote Signaller" - ram_cost = 5 - id = "signaller" - toggle = 0 - - template_file = "pai_signaller.tmpl" - ui_title = "Signaller" - ui_width = 320 - ui_height = 150 - -/datum/pai_software/signaller/on_ui_data(mob/living/silicon/pai/user, datum/topic_state/state = GLOB.self_state) - var/data[0] - - data["frequency"] = format_frequency(user.sradio.frequency) - data["code"] = user.sradio.code - - return data - -/datum/pai_software/signaller/Topic(href, href_list) - var/mob/living/silicon/pai/P = usr - if(!istype(P)) return - - if(href_list["send"]) - P.sradio.send_signal("ACTIVATE") - for(var/mob/O in hearers(1, P.loc)) - O.show_message("[bicon(P)] *beep* *beep*", 3, "*beep* *beep*", 2) - return 1 - - else if(href_list["freq"]) - var/new_frequency = (P.sradio.frequency + text2num(href_list["freq"])) - if(new_frequency < PUBLIC_LOW_FREQ || new_frequency > PUBLIC_HIGH_FREQ) - new_frequency = sanitize_frequency(new_frequency) - P.sradio.set_frequency(new_frequency) - return 1 - - else if(href_list["code"]) - P.sradio.code += text2num(href_list["code"]) - P.sradio.code = round(P.sradio.code) - P.sradio.code = min(100, P.sradio.code) - P.sradio.code = max(1, P.sradio.code) - return 1 - -/datum/pai_software/host_scan - name = "Host Bioscan" - ram_cost = 5 - id = "bioscan" - toggle = 0 - - template_file = "pai_bioscan.tmpl" - ui_title = "Host Bioscan" - ui_width = 400 - ui_height = 350 - -/datum/pai_software/host_scan/on_ui_data(mob/living/silicon/pai/user, datum/topic_state/state = GLOB.self_state) - var/data[0] - var/mob/living/held = user.loc - var/count = 0 - - // Find the carrier - while(!isliving(held)) - if(!held || !held.loc || count > 6) - //For a runtime where M ends up in nullspace (similar to bluespace but less colourful) - to_chat(user, "You are not being carried by anyone!") - return 0 - held = held.loc - count++ - if(isliving(held)) - data["holder"] = held - data["health"] = "[held.stat > 1 ? "dead" : "[held.health]% healthy"]" - data["brute"] = "[held.getBruteLoss() > 50 ? "" : ""][held.getBruteLoss()]" - data["oxy"] = "[held.getOxyLoss() > 50 ? "" : ""][held.getOxyLoss()]" - data["tox"] = "[held.getToxLoss() > 50 ? "" : ""][held.getToxLoss()]" - data["burn"] = "[held.getFireLoss() > 50 ? "" : ""][held.getFireLoss()]" - data["temp"] = "[held.bodytemperature-T0C]°C ([held.bodytemperature*1.8-459.67]°F)" - else - data["holder"] = 0 - - return data - -/datum/pai_software/flashlight - name = "Flashlight" - ram_cost = 5 - id = "flashlight" - -/datum/pai_software/flashlight/toggle(mob/living/silicon/pai/user) - var/atom/movable/actual_location = istype(user.loc, /obj/item/paicard) ? user.loc : user - if(!user.flashlight_on) - actual_location.set_light(2) - user.card.set_light(2) - else - actual_location.set_light(0) - user.card.set_light(0) - - user.flashlight_on = !user.flashlight_on - -/datum/pai_software/flashlight/is_active(mob/living/silicon/pai/user) - return user.flashlight_on diff --git a/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen.dm b/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen.dm index e78acd08a90..586983b5d06 100644 --- a/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen.dm +++ b/code/modules/mob/living/simple_animal/hostile/terror_spiders/queen.dm @@ -102,6 +102,8 @@ var/mob/living/simple_animal/hostile/poison/terror_spider/T = thing if(!T.spider_myqueen) continue + if(T == src) + continue if(T.spider_myqueen != src) continue if(prob(50) || T.spider_tier >= spider_tier) diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 617629e1b9a..a767383b72b 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -432,7 +432,7 @@ spawn(30) for(var/C in GLOB.employmentCabinets) var/obj/structure/filingcabinet/employment/employmentCabinet = C - if(!employmentCabinet.virgin) + if(employmentCabinet.populated) employmentCabinet.addFile(employee) /mob/new_player/proc/AnnounceCyborg(var/mob/living/character, var/rank, var/join_message) diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm index eb350f5e29a..b5ea1bf1396 100644 --- a/code/modules/paperwork/filingcabinet.dm +++ b/code/modules/paperwork/filingcabinet.dm @@ -15,7 +15,7 @@ icon = 'icons/obj/bureaucracy.dmi' icon_state = "filingcabinet" density = 1 - anchored = 1 + anchored = TRUE /obj/structure/filingcabinet/chestdrawer @@ -30,14 +30,14 @@ icon_state = "tallcabinet" -/obj/structure/filingcabinet/Initialize() +/obj/structure/filingcabinet/Initialize(mapload) ..() for(var/obj/item/I in loc) if(istype(I, /obj/item/paper) || istype(I, /obj/item/folder) || istype(I, /obj/item/photo)) I.loc = src -/obj/structure/filingcabinet/attackby(obj/item/P as obj, mob/user as mob, params) +/obj/structure/filingcabinet/attackby(obj/item/P, mob/user, params) if(istype(P, /obj/item/paper) || istype(P, /obj/item/folder) || istype(P, /obj/item/photo) || istype(P, /obj/item/paper_bundle) || istype(P, /obj/item/documents)) to_chat(user, "You put [P] in [src].") user.drop_item() @@ -46,15 +46,15 @@ sleep(5) icon_state = initial(icon_state) updateUsrDialog() - else if(istype(P, /obj/item/wrench)) - playsound(loc, P.usesound, 50, 1) - anchored = !anchored - to_chat(user, "You [anchored ? "wrench" : "unwrench"] \the [src].") else if(user.a_intent != INTENT_HARM) to_chat(user, "You can't put [P] in [src]!") else return ..() +/obj/structure/filingcabinet/wrench_act(mob/living/user, obj/item/I) + . = TRUE + default_unfasten_wrench(user, I) + /obj/structure/filingcabinet/deconstruct(disassembled = TRUE) if(!(flags & NODECONSTRUCT)) new /obj/item/stack/sheet/metal(loc, 2) @@ -62,9 +62,9 @@ I.forceMove(loc) qdel(src) -/obj/structure/filingcabinet/attack_hand(mob/user as mob) - if(contents.len <= 0) - to_chat(user, "\The [src] is empty.") +/obj/structure/filingcabinet/attack_hand(mob/user) + if(!length(contents)) + to_chat(user, "[src] is empty.") return user.set_machine(src) @@ -74,7 +74,7 @@ dat += "" var/datum/browser/popup = new(user, "filingcabinet", name, 350, 300) popup.set_content(dat) - popup.open(0) + popup.open(FALSE) return @@ -85,8 +85,8 @@ ..() /obj/structure/filingcabinet/attack_self_tk(mob/user) - if(contents.len) - if(prob(40 + contents.len * 5)) + if(length(contents)) + if(prob(40 + (length(contents) * 5))) var/obj/item/I = pick(contents) I.loc = loc if(prob(25)) @@ -105,20 +105,19 @@ usr.put_in_hands(P) updateUsrDialog() icon_state = "[initial(icon_state)]-open" - spawn(0) - sleep(5) - icon_state = initial(icon_state) + sleep(5) + icon_state = initial(icon_state) /* * Security Record Cabinets */ /obj/structure/filingcabinet/security - var/virgin = 1 + var/populated = FALSE /obj/structure/filingcabinet/security/proc/populate() - if(virgin) + if(!populated) for(var/datum/data/record/G in GLOB.data_core.general) var/datum/data/record/S for(var/datum/data/record/R in GLOB.data_core.security) @@ -133,7 +132,7 @@ P.info += "[c]
" P.info += "" P.name = "paper - '[G.fields["name"]]'" - virgin = 0 //tabbing here is correct- it's possible for people to try and use it + populated = TRUE //tabbing here is correct- it's possible for people to try and use it //before the records have been generated, so we do this inside the loop. /obj/structure/filingcabinet/security/attack_hand() @@ -148,10 +147,10 @@ * Medical Record Cabinets */ /obj/structure/filingcabinet/medical - var/virgin = 1 + var/populated = FALSE /obj/structure/filingcabinet/medical/proc/populate() - if(virgin) + if(!populated) for(var/datum/data/record/G in GLOB.data_core.general) var/datum/data/record/M for(var/datum/data/record/R in GLOB.data_core.medical) @@ -166,7 +165,7 @@ P.info += "[c]
" P.info += "" P.name = "paper - '[G.fields["name"]]'" - virgin = 0 //tabbing here is correct- it's possible for people to try and use it + populated = TRUE //tabbing here is correct- it's possible for people to try and use it //before the records have been generated, so we do this inside the loop. /obj/structure/filingcabinet/medical/attack_hand() @@ -184,9 +183,9 @@ GLOBAL_LIST_EMPTY(employmentCabinets) /obj/structure/filingcabinet/employment - var/cooldown = 0 + var/cooldown = FALSE // Only used for devils icon_state = "employmentcabinet" - var/virgin = 1 + var/populated = FALSE /obj/structure/filingcabinet/employment/New() GLOB.employmentCabinets += src @@ -210,23 +209,17 @@ GLOBAL_LIST_EMPTY(employmentCabinets) new /obj/item/paper/contract/employment(src, employee) /obj/structure/filingcabinet/employment/attack_hand(mob/user) - if(!cooldown) - if(virgin) + if(cooldown) + to_chat(user, "[src] is jammed, give it a few seconds.") + else + if(!populated) fillCurrent() - virgin = 0 - cooldown = 1 - ..() - sleep(100) // prevents the devil from just instantly emptying the cabinet, ensuring an easy win. - cooldown = 0 - else - to_chat(user, "The [src] is jammed, give it a few seconds.") + populated = TRUE + if(user.mind.special_role != "devil") + return ..() -/obj/structure/filingcabinet/employment/attackby(obj/item/P, mob/user, params) - if(istype(P, /obj/item/wrench)) - to_chat(user, "You begin to [anchored ? "wrench" : "unwrench"] [src].") - if (do_after(user,300,user)) - playsound(loc, 'sound/items/Ratchet.ogg', 50, 1) - anchored = !anchored - to_chat(user, "You successfully [anchored ? "wrench" : "unwrench"] [src].") - else - return ..() + else + cooldown = TRUE + ..() + sleep(10 SECONDS) // prevents the devil from just instantly emptying the cabinet, ensuring an easy win. + cooldown = FALSE diff --git a/code/modules/pda/ai.dm b/code/modules/pda/ai.dm index ac4e6c9fd6b..aece49b6b83 100644 --- a/code/modules/pda/ai.dm +++ b/code/modules/pda/ai.dm @@ -97,8 +97,8 @@ /obj/item/pda/silicon/pai/can_use() var/mob/living/silicon/pai/pAI = usr if(!istype(pAI)) - return 0 - if(!pAI.software["messenger"]) + return FALSE + if(!pAI.installed_software["messenger"]) to_chat(usr, "You have not purchased the digital messenger!") - return 0 + return FALSE return ..() && !pAI.silence_time diff --git a/code/modules/projectiles/guns/alien.dm b/code/modules/projectiles/guns/alien.dm index aec047ad89b..973e7da9596 100644 --- a/code/modules/projectiles/guns/alien.dm +++ b/code/modules/projectiles/guns/alien.dm @@ -1,59 +1,30 @@ -/obj/item/gun/projectile/automatic/spikethrower +/obj/item/gun/energy/spikethrower //It's like the cyborg LMG, uses energy to make spikes name = "\improper Vox spike thrower" desc = "A vicious alien projectile weapon. Parts of it quiver gelatinously, as though the thing is insectile and alive." + icon = 'icons/obj/guns/projectile.dmi' icon_state = "spikethrower" item_state = "spikethrower" w_class = WEIGHT_CLASS_SMALL fire_sound_text = "a strange noise" - mag_type = /obj/item/ammo_box/magazine/internal/spikethrower - burst_size = 2 - fire_delay = 3 can_suppress = 0 - var/charge_tick = 0 - var/charge_delay = 15 + burst_size = 2 // burst has to be stored here + can_charge = FALSE + selfcharge = TRUE + charge_delay = 10 restricted_species = list(/datum/species/vox) + ammo_type = list(/obj/item/ammo_casing/energy/spike) -/obj/item/gun/projectile/automatic/spikethrower/New() - ..() - START_PROCESSING(SSobj, src) - -/obj/item/gun/projectile/automatic/spikethrower/Destroy() - STOP_PROCESSING(SSobj, src) - return ..() - -/obj/item/gun/projectile/automatic/spikethrower/update_icon() +/obj/item/gun/energy/spikethrower/emp_act() return -/obj/item/gun/projectile/automatic/spikethrower/process() - charge_tick++ - if(charge_tick < charge_delay || !magazine) - return - charge_tick = 0 - var/obj/item/ammo_casing/caseless/spike/S = new(get_turf(src)) - magazine.give_round(S) - return 1 - -/obj/item/gun/projectile/automatic/spikethrower/attack_self() - return - -/obj/item/gun/projectile/automatic/spikethrower/process_chamber(eject_casing = 0, empty_chamber = 1) - ..() - -/obj/item/ammo_box/magazine/internal/spikethrower - name = "\improper Vox spikethrower internal magazine" - ammo_type = /obj/item/ammo_casing/caseless/spike - caliber = "spike" - max_ammo = 10 - -/obj/item/ammo_casing/caseless/spike +/obj/item/ammo_casing/energy/spike name = "alloy spike" desc = "A broadhead spike made out of a weird silvery metal." projectile_type = /obj/item/projectile/bullet/spike muzzle_flash_effect = null - throwforce = 5 - w_class = WEIGHT_CLASS_NORMAL - caliber = "spike" - icon_state = "bolt" + e_cost = 100 + delay = 3 //and delay has to be stored here on energy guns + select_name = "spike" fire_sound = 'sound/weapons/bladeslice.ogg' /obj/item/projectile/bullet/spike diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 90e6e700db9..b35400abc92 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -318,6 +318,9 @@ zoom_amt = 7 //Long range, enough to see in front of you, but no tiles behind you. shaded_charge = 1 +/obj/item/gun/energy/sniperrifle/isHandgun() + return FALSE // Makes it so no, you cant fit a massive, bulky, sniper under your arm + // Temperature Gun // /obj/item/gun/energy/temperature name = "temperature gun" diff --git a/code/modules/reagents/chemistry/reagents/medicine.dm b/code/modules/reagents/chemistry/reagents/medicine.dm index 072a22aa7ba..894491056fc 100644 --- a/code/modules/reagents/chemistry/reagents/medicine.dm +++ b/code/modules/reagents/chemistry/reagents/medicine.dm @@ -1001,19 +1001,14 @@ reagent_state = LIQUID color = "#FFDCFF" taste_description = "stability" + var/list/drug_list = list("crank","methamphetamine","space_drugs","psilocybin","ephedrine","epinephrine","stimulants","bath_salts","lsd","thc") /datum/reagent/medicine/haloperidol/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE - M.reagents.remove_reagent("crank", 5) - M.reagents.remove_reagent("methamphetamine", 5) - M.reagents.remove_reagent("space_drugs", 5) - M.reagents.remove_reagent("psilocybin", 5) - M.reagents.remove_reagent("ephedrine", 5) - M.reagents.remove_reagent("epinephrine", 5) - M.reagents.remove_reagent("stimulants", 3) - M.reagents.remove_reagent("bath_salts", 5) - M.reagents.remove_reagent("lsd", 5) - M.reagents.remove_reagent("thc", 5) + for(var/I in M.reagents.reagent_list) + var/datum/reagent/R = I + if(drug_list.Find(R.id)) + M.reagents.remove_reagent(R.id, 5) update_flags |= M.AdjustDruggy(-5, FALSE) M.AdjustHallucinate(-5) M.AdjustJitter(-5) @@ -1241,9 +1236,15 @@ can_synth = FALSE harmless = FALSE taste_description = "wholeness" + var/list/stimulant_list = list("methamphetamine", "crank", "bath_salts", "stimulative_agent", "stimulants") /datum/reagent/medicine/nanocalcium/on_mob_life(mob/living/carbon/human/M) var/update_flags = STATUS_UPDATE_NONE + var/has_stimulant = FALSE + for(var/I in M.reagents.reagent_list) + var/datum/reagent/R = I + if(stimulant_list.Find(R.id)) + has_stimulant = TRUE switch(current_cycle) if(1 to 19) M.AdjustJitter(4) @@ -1251,7 +1252,7 @@ to_chat(M, "Your skin feels hot and your veins are on fire!") if(20 to 43) //If they have stimulants or stimulant drugs then just apply toxin damage instead. - if(M.reagents.has_reagent("methamphetamine") || M.reagents.has_reagent("crank") || M.reagents.has_reagent("bath_salts") || M.reagents.has_reagent("stimulative_agent") || M.reagents.has_reagent("stimulants")) + if(has_stimulant == TRUE) update_flags |= M.adjustToxLoss(10, FALSE) else //apply debilitating effects if(prob(75)) @@ -1262,7 +1263,7 @@ to_chat(M, "Your body goes rigid, you cannot move at all!") update_flags |= M.AdjustWeakened(15, FALSE) if(45 to INFINITY) // Start fixing bones | If they have stimulants or stimulant drugs in their system then the nanites won't work. - if(M.reagents.has_reagent("methamphetamine") || M.reagents.has_reagent("crank") || M.reagents.has_reagent("bath_salts") || M.reagents.has_reagent("stimulative_agent") || M.reagents.has_reagent("stimulants")) + if(has_stimulant == TRUE) return ..() else for(var/obj/item/organ/external/E in M.bodyparts) diff --git a/code/modules/security_levels/keycard authentication.dm b/code/modules/security_levels/keycard_authentication.dm similarity index 100% rename from code/modules/security_levels/keycard authentication.dm rename to code/modules/security_levels/keycard_authentication.dm diff --git a/code/modules/security_levels/security levels.dm b/code/modules/security_levels/security_levels.dm similarity index 100% rename from code/modules/security_levels/security levels.dm rename to code/modules/security_levels/security_levels.dm diff --git a/code/modules/station_goals/bluespace_tap.dm b/code/modules/station_goals/bluespace_tap.dm new file mode 100644 index 00000000000..cbf0bbe9717 --- /dev/null +++ b/code/modules/station_goals/bluespace_tap.dm @@ -0,0 +1,445 @@ +//Station goal stuff goes here +/datum/station_goal/bluespace_tap + name = "Bluespace Harvester" + var/goal = 500000 + +/datum/station_goal/bluespace_tap/get_report() + return {"Bluespace Harvester Experiment
+ Another research station has developed a device called a Bluespace Harvester. + It reaches through bluespace into other dimensions to shift through them for interesting objects.
+ Due to unforseen circumstances the large-scale test of the prototype could not be completed on the original research station. It will instead be carried out on your station. + Acquire the circuit board, construct the device over a wire knot and feed it enough power to generate [goal] mining points by shift end. +

+ Be advised that the device is experimental and might act in slightly unforseen ways if sufficiently powered. +
+ Nanotrasen Science Directorate"} + +/datum/station_goal/bluespace_tap/on_report() + var/datum/supply_packs/misc/station_goal/bluespace_tap/P = SSshuttle.supply_packs["[/datum/supply_packs/misc/station_goal/bluespace_tap]"] + P.special_enabled = TRUE + +/datum/station_goal/bluespace_tap/check_completion() + if(..()) + return TRUE + var/highscore = 0 + for(var/obj/machinery/power/bluespace_tap/T in GLOB.machines) + highscore = max(highscore, T.total_points) + to_chat(world, "Bluespace Harvester Highscore : [highscore >= goal ? "": ""][highscore]") + if(highscore >= goal) + return TRUE + return FALSE + +//needed for the vending part of it +/datum/data/bluespace_tap_product + var/product_name = "generic" + var/product_path = null + var/product_cost = 100 //cost in mining points to generate + + +/datum/data/bluespace_tap_product/New(name, path, cost) + product_name = name + product_path = path + product_cost = cost + +/obj/item/circuitboard/machine/bluespace_tap + name = "Bluespace Harvester (Machine Board)" + build_path = /obj/machinery/power/bluespace_tap + origin_tech = "engineering=2;combat=2;bluespace=3" + req_components = list( + /obj/item/stock_parts/capacitor/quadratic = 5,//Probably okay, right? + /obj/item/stack/ore/bluespace_crystal = 5) + +/obj/effect/spawner/lootdrop/bluespace_tap + name = "bluespace harvester reward spawner" + lootcount = 1 + +/obj/effect/spawner/lootdrop/bluespace_tap/hat + name = "exotic hat" + loot = list( + /obj/item/clothing/head/collectable/chef, //same weighing on all of them + /obj/item/clothing/head/collectable/paper, + /obj/item/clothing/head/collectable/tophat, + /obj/item/clothing/head/collectable/captain, + /obj/item/clothing/head/collectable/beret, + /obj/item/clothing/head/collectable/welding, + /obj/item/clothing/head/collectable/flatcap, + /obj/item/clothing/head/collectable/pirate, + /obj/item/clothing/head/collectable/kitty, + /obj/item/clothing/head/crown/fancy, + /obj/item/clothing/head/collectable/rabbitears, + /obj/item/clothing/head/collectable/wizard, + /obj/item/clothing/head/collectable/hardhat, + /obj/item/clothing/head/collectable/HoS, + /obj/item/clothing/head/collectable/thunderdome, + /obj/item/clothing/head/collectable/swat, + /obj/item/clothing/head/collectable/slime, + /obj/item/clothing/head/collectable/police, + /obj/item/clothing/head/collectable/slime, + /obj/item/clothing/head/collectable/xenom, + /obj/item/clothing/head/collectable/petehat + ) + + +/obj/effect/spawner/lootdrop/bluespace_tap/cultural + name = "cultural artifacts" + loot = list( + /obj/vehicle/space/speedbike/red = 10, + /obj/item/grenade/clusterbuster/honk = 10, + /obj/item/toy/katana = 10, + /obj/item/stack/tile/brass/fifty = 20, + /obj/item/stack/sheet/mineral/abductor/fifty = 20, + /obj/item/sord = 20, + /obj/item/toy/syndicateballoon = 15, + /obj/item/lighter/zippo/gonzofist = 5, + /obj/item/lighter/zippo/engraved = 5, + /obj/item/lighter/zippo/nt_rep = 5, + /obj/item/gun/projectile/automatic/c20r/toy = 1, + /obj/item/gun/projectile/automatic/l6_saw/toy = 1, + /obj/item/gun/projectile/automatic/toy/pistol = 2, + /obj/item/gun/projectile/automatic/toy/pistol/enforcer = 1, + /obj/item/gun/projectile/shotgun/toy = 1, + /obj/item/gun/projectile/shotgun/toy/crossbow = 1, + /obj/item/gun/projectile/shotgun/toy/tommygun = 1, + /obj/item/gun/projectile/automatic/sniper_rifle/toy = 1, + /obj/item/twohanded/dualsaber/toy = 5, + /obj/machinery/snow_machine = 10, + /obj/item/clothing/head/kitty = 5, + /obj/item/coin/antagtoken = 5, + /obj/item/toy/prizeball/figure = 15, + /obj/item/toy/prizeball/therapy = 10, + /obj/item/bedsheet/patriot = 2, + /obj/item/bedsheet/rainbow = 2, + /obj/item/bedsheet/captain = 2, + /obj/item/bedsheet/centcom = 1, //mythic rare rarity + /obj/item/bedsheet/syndie = 2, + /obj/item/bedsheet/cult = 2, + /obj/item/bedsheet/wiz = 2, + /obj/item/stack/sheet/mineral/tranquillite/fifty = 3, + /obj/item/clothing/gloves/combat = 5 + ) + +/obj/effect/spawner/lootdrop/bluespace_tap/organic + name = "organic objects" + loot = list( + /obj/item/seeds/random/labelled = 50, + /obj/item/guardiancreator/biological = 5, + /obj/item/organ/internal/vocal_cords/adamantine = 15, + /obj/item/storage/pill_bottle/random_meds/labelled = 25, + /obj/item/reagent_containers/glass/bottle/reagent/omnizine = 15, + /obj/item/dnainjector/telemut = 5, + /obj/item/dnainjector/midgit = 5, + /obj/item/dnainjector/morph = 5, + /obj/item/dnainjector/regenerate = 5, + /mob/living/simple_animal/pet/dog/corgi/ = 5, + /mob/living/simple_animal/pet/cat = 5, + /mob/living/simple_animal/pet/dog/fox/ = 5, + /mob/living/simple_animal/pet/penguin = 5, + /mob/living/simple_animal/pig = 5, + /obj/item/slimepotion/sentience = 5, + /obj/item/clothing/mask/cigarette/cigar/havana = 3, + /obj/item/stack/sheet/mineral/bananium/fifty = 2, //bananas are organic, clearly. + /obj/item/storage/box/monkeycubes = 5, + /obj/item/stack/tile/carpet/twenty = 10, + /obj/item/stack/tile/carpet/black/twenty = 10, + /obj/item/soap/deluxe = 5 + ) + +/obj/effect/spawner/lootdrop/bluespace_tap/food + name = "fancy food" + lootcount = 3 + loot = list( + /obj/item/reagent_containers/food/snacks/wingfangchu, + /obj/item/reagent_containers/food/snacks/hotdog, + /obj/item/reagent_containers/food/snacks/sliceable/turkey, + /obj/item/reagent_containers/food/snacks/plumphelmetbiscuit, + /obj/item/reagent_containers/food/snacks/appletart, + /obj/item/reagent_containers/food/snacks/sliceable/cheesecake, + /obj/item/reagent_containers/food/snacks/sliceable/bananacake, + /obj/item/reagent_containers/food/snacks/sliceable/chocolatecake, + /obj/item/reagent_containers/food/snacks/meatballsoup, + /obj/item/reagent_containers/food/snacks/mysterysoup, + /obj/item/reagent_containers/food/snacks/stew, + /obj/item/reagent_containers/food/snacks/hotchili, + /obj/item/reagent_containers/food/snacks/burrito, + /obj/item/reagent_containers/food/snacks/fishburger, + /obj/item/reagent_containers/food/snacks/cubancarp, + /obj/item/reagent_containers/food/snacks/fishandchips, + /obj/item/reagent_containers/food/snacks/meatpie, + /obj/item/pizzabox/hawaiian, //it ONLY gives hawaiian. MUHAHAHA + /obj/item/reagent_containers/food/snacks/sliceable/xenomeatbread //maybe add some dangerous/special food here, ie robobuger? + ) + +/** + * # Bluespace Harvester + * + * A station goal that consumes enormous amounts of power to generate (mostly fluff) rewards + * + * A machine that takes power each tick, generates points based on it + * and lets you spend those points on rewards. A certain amount of points + * has to be generated for the station goal to count as completed. + */ +/obj/machinery/power/bluespace_tap + name = "Bluespace harvester" + icon = 'icons/obj/machines/bluespace_tap.dmi' + icon_state = "bluespace_tap" //sprites by Ionward + max_integrity = 300 + pixel_x = -32 //shamelessly stolen from dna vault + pixel_y = -64 + /// For faking having a big machine, dummy 'machines' that are hidden inside the large sprite and make certain tiles dense. See new and destroy. + var/list/obj/structure/fillers = list() + use_power = NO_POWER_USE // power usage is handelled manually + /// Value that will be multiplied with mining level to generate actual power use + active_power_usage = 500 + density = TRUE + interact_offline = TRUE + luminosity = 1 + + /// list of possible products + var/static/product_list = list( + new /datum/data/bluespace_tap_product("Unknown Exotic Hat", /obj/effect/spawner/lootdrop/bluespace_tap/hat, 10000), + new /datum/data/bluespace_tap_product("Unknown Snack", /obj/effect/spawner/lootdrop/bluespace_tap/food, 12000), + new /datum/data/bluespace_tap_product("Unknown Cultural Artifact", /obj/effect/spawner/lootdrop/bluespace_tap/cultural, 15000), + new /datum/data/bluespace_tap_product("Unknown Biological Artifact", /obj/effect/spawner/lootdrop/bluespace_tap/organic, 20000) + ) + + /// The level the machine is currently mining at. 0 means off + var/input_level = 0 + /// The machine you WANT the machine to mine at. It will try to match this. + var/desired_level = 0 + /// Available mining points + var/points = 0 + /// The total points earned by this machine so far, for tracking station goal and highscore + var/total_points = 0 + /// How much power the machine needs per processing tick at the current level. + var/actual_power_usage = 0 + + + // Tweak these and active_power_usage to balance power generation + + /// Max power input level, I don't expect this to be ever reached + var/max_level = 20 + /// Used for power consumption, higher means more power consumed per level + var/base_value = 5 + /// Amount of points to give per mining level + var/base_points = 4 + /// How high the machine can be run before it starts having a chance for dimension breaches. + var/safe_levels = 7 + + +/obj/machinery/power/bluespace_tap/New() + ..() + //more code stolen from dna vault, inculding comment below. Taking bets on that datum being made ever. + //TODO: Replace this,bsa and gravgen with some big machinery datum + var/list/occupied = list() + for(var/direct in list(EAST, WEST, SOUTHEAST, SOUTHWEST)) + occupied += get_step(src, direct) + occupied += locate(x + 1, y - 2, z) + occupied += locate(x - 1, y - 2, z) + + for(var/T in occupied) + var/obj/structure/filler/F = new(T) + F.parent = src + fillers += F + component_parts = list() + component_parts += new /obj/item/circuitboard/machine/bluespace_tap(null) + for(var/i = 1 to 5) //five of each + component_parts += new /obj/item/stock_parts/capacitor/quadratic(null) + component_parts += new /obj/item/stack/ore/bluespace_crystal(null) + if(!powernet) + connect_to_network() + +/obj/machinery/power/bluespace_tap/Destroy() + QDEL_LIST(fillers) + return ..() + +/** + * Increases the desired mining level + * + * Increases the desired mining level, that + * the machine tries to reach if there + * is enough power for it. Note that it does + * NOT increase the actual mining level directly. + */ +/obj/machinery/power/bluespace_tap/proc/increase_level() + if(desired_level < max_level) + desired_level++ +/** + * Decreases the desired mining level + * + * Decreases the desired mining level, that + * the machine tries to reach if there + * is enough power for it. Note that it does + * NOT decrease the actual mining level directly. + */ +/obj/machinery/power/bluespace_tap/proc/decrease_level() + if(desired_level > 0) + desired_level-- + +/** + * Sets the desired mining level + * + * Sets the desired mining level, that + * the machine tries to reach if there + * is enough power for it. Note that it does + * NOT change the actual mining level directly. + * Arguments: + * * t_level - The level we try to set it at, between 0 and max_level + */ +/obj/machinery/power/bluespace_tap/proc/set_level(t_level) + if(t_level < 0) + return + if(t_level > max_level) + return + desired_level = t_level + +/** + * Gets the amount of power at a set input level + * + * Gets the amount of power (in W) a set input level needs. + * Note that this is not necessarily the current power use. + * * i_level - The hypothetical input level for which we want to know the power use. + */ +/obj/machinery/power/bluespace_tap/proc/get_power_use(i_level) + if(!i_level) + return 0 + return (base_value ** i_level) * active_power_usage //each level takes one order of magnitude more power than the previous one + +/obj/machinery/power/bluespace_tap/process() + actual_power_usage = get_power_use(input_level) + if(surplus() < actual_power_usage) //not enough power, so turn down a level + input_level-- + return // and no mining gets done + if(actual_power_usage) + add_load(actual_power_usage) + var/points_to_add = (input_level + emagged) * base_points + points += points_to_add //point generation, emagging gets you 'free' points at the cost of higher anomaly chance + total_points += points_to_add + // actual input level changes slowly + if(input_level < desired_level && (surplus() >= get_power_use(input_level + 1))) + input_level++ + else if(input_level > desired_level) + input_level-- + if(prob(input_level - safe_levels + (emagged * 5))) //at dangerous levels, start doing freaky shit. prob with values less than 0 treat it as 0 + GLOB.event_announcement.Announce("Unexpected power spike during Bluespace Harvester Operation. Extra-dimensional intruder alert. Expected location: [get_area(src).name]. [emagged ? "DANGER: Emergency shutdown failed! Please proceed with manual shutdown." : "Emergency shutdown initiated."]", "Bluespace Harvester Malfunction") + if(!emagged) + input_level = 0 //emergency shutdown unless we're sabotaged + desired_level = 0 + for(var/i in 1 to rand(1, 3)) + var/turf/location = locate(x + rand(-5, 5), y + rand(-5, 5), z) + new /obj/structure/spawner/nether/bluespace_tap(location) + + + +/obj/machinery/power/bluespace_tap/tgui_data(mob/user) + var/data[0] + + data["desiredLevel"] = desired_level + data["inputLevel"] = input_level + data["points"] = points + data["totalPoints"] = total_points + data["powerUse"] = actual_power_usage + data["availablePower"] = surplus() + data["maxLevel"] = max_level + data["emagged"] = emagged + data["safeLevels"] = safe_levels + data["nextLevelPower"] = get_power_use(input_level + 1) + + /// A list of lists, each inner list equals a datum + var/list/listed_items = list() + for(var/key = 1 to length(product_list)) + var/datum/data/bluespace_tap_product/A = product_list[key] + listed_items[++listed_items.len] = list( + "key" = key, + "name" = A.product_name, + "price" = A.product_cost) + data["product"] = listed_items + return data + + +/obj/machinery/power/bluespace_tap/attack_hand(mob/user) + add_fingerprint(user) + tgui_interact(user) + +/obj/machinery/power/bluespace_tap/attack_ghost(mob/user) + tgui_interact(user) + +/obj/machinery/power/bluespace_tap/attack_ai(mob/user) + tgui_interact(user) + +/** + * Produces the product with the desired key and increases product cost accordingly + */ +/obj/machinery/power/bluespace_tap/proc/produce(key) + if(key <= 0 || key > length(product_list)) //invalid key + return + var/datum/data/bluespace_tap_product/A = product_list[key] + if(!A) + return + if(A.product_cost > points) + return + points -= A.product_cost + A.product_cost = round(1.2 * A.product_cost, 1) + playsound(src, 'sound/magic/blink.ogg', 50) + do_sparks(2, FALSE, src) + new A.product_path(get_turf(src)) + + + +//UI stuff below + +/obj/machinery/power/bluespace_tap/tgui_act(action, params) + if(..()) + return + . = TRUE // we want to refresh in all the cases below + switch(action) + if("decrease") + decrease_level() + if("increase") + increase_level() + if("set") + set_level(text2num(params["set_level"])) + if("vend")//it's not really vending as producing, but eh + var/key = text2num(params["target"]) + produce(key) + +/obj/machinery/power/bluespace_tap/tgui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = TRUE, datum/tgui/master_ui = null, datum/tgui_state/state = GLOB.tgui_default_state) + ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) + if(!ui) + ui = new(user, src, ui_key, "BluespaceTap", name, 650, 400, master_ui, state) + ui.open() + +//emaging provides slightly more points but at much greater risk +/obj/machinery/power/bluespace_tap/emag_act(mob/living/user as mob) + if(emagged) + return + emagged = TRUE + do_sparks(5, FALSE, src) + if(user) + user.visible_message("[user] overrides the safety protocols of [src].", "You override the safety protocols.") + +/obj/structure/spawner/nether/bluespace_tap + spawn_time = 30 SECONDS + max_mobs = 5 //Dont' want them overrunning the station + max_integrity = 250 + +/obj/structure/spawner/nether/bluespace_tap/deconstruct(disassembled) + new /obj/item/stack/ore/bluespace_crystal(loc) //have a reward + return ..() + +/obj/item/paper/bluespace_tap + name = "paper- 'The Experimental NT Bluespace Harvester - Mining other universes for science and profit!'" + info = "

Important Instructions!

Please follow all setup instructions to ensure proper operation.
\ + 1. Create a wire node with ample access to spare power. The device operates independently of APCs.
\ + 2. Create a machine frame as normal on the wire node, taking into account the device's dimensions (3 by 3 meters).
\ + 3. Insert wiring, circuit board and required components and finish construction according to NT engineering standards.
\ + 4. Ensure the device is connected to the proper power network and the network contains sufficient power.
\ + 5. Set machine to desired level. Check periodically on machine progress.
\ + 6. Optionally, spend earned points on fun and exciting rewards.

\ +

Operational Principles

\ +

The Bluespace Harvester is capable of accepting a nearly limitless amount of power to search other universes for valuables to recover. The speed of this search is controlled via the 'level' control of the device. \ + While it can be run on a low level by almost any power generation system, higher levels require work by a dedicated engineering team to power. \ + As we are interested in testing how the device performs under stress, we wish to encourage you to stress-test it and see how much power you can provide it. \ + For this reason, total shift point production will be calculated and announced at shift end. High totals may result in bonus payments to members of the Engineering department.

\ +

NT Science Directorate, Extradimensional Exploitation Research Group

\ +

Device highly experimental. Not for sale. Do not operate near small children or vital NT assets. Do not tamper with machine. In case of existential dread, stop machine immediately. \ + Please document any and all extradimensional incursions. In case of imminent death, please leave said documentation in plain sight for clean-up teams to recover.

" diff --git a/code/modules/station_goals/dna_vault.dm b/code/modules/station_goals/dna_vault.dm index 033cd9fdf94..29fd5a7877b 100644 --- a/code/modules/station_goals/dna_vault.dm +++ b/code/modules/station_goals/dna_vault.dm @@ -136,6 +136,10 @@ GLOBAL_LIST_INIT(non_simple_animals, typecacheof(list(/mob/living/carbon/human/m invisibility = 101 var/obj/machinery/parent +/obj/structure/filler/Destroy() + parent = null + return ..() + /obj/structure/filler/ex_act() return @@ -187,12 +191,8 @@ GLOBAL_LIST_INIT(non_simple_animals, typecacheof(list(/mob/living/carbon/human/m ..() /obj/machinery/dna_vault/Destroy() - for(var/V in fillers) - var/obj/structure/filler/filler = V - filler.parent = null - qdel(filler) - fillers.Cut() - . = ..() + QDEL_LIST(fillers) + return ..() /obj/machinery/dna_vault/attack_ghost(mob/user) if(stat & (BROKEN|MAINT)) diff --git a/icons/_nanomaps/MetaStation_nanomap_z1.png b/icons/_nanomaps/MetaStation_nanomap_z1.png index 70c0b1fe013..210806b2d9d 100644 Binary files a/icons/_nanomaps/MetaStation_nanomap_z1.png and b/icons/_nanomaps/MetaStation_nanomap_z1.png differ diff --git a/icons/mob/actions/actions.dmi b/icons/mob/actions/actions.dmi index 011baf1e4ac..7238ef6072e 100644 Binary files a/icons/mob/actions/actions.dmi and b/icons/mob/actions/actions.dmi differ diff --git a/icons/mob/eyes.dmi b/icons/mob/eyes.dmi index 6f3e3f0ea2e..8620822ca5d 100644 Binary files a/icons/mob/eyes.dmi and b/icons/mob/eyes.dmi differ diff --git a/icons/mob/species/drask/eyes.dmi b/icons/mob/species/drask/eyes.dmi index 92b8d7c2190..697a8c7fa8d 100644 Binary files a/icons/mob/species/drask/eyes.dmi and b/icons/mob/species/drask/eyes.dmi differ diff --git a/icons/mob/species/grey/eyes.dmi b/icons/mob/species/grey/eyes.dmi index c3914dfd0be..522756904f0 100644 Binary files a/icons/mob/species/grey/eyes.dmi and b/icons/mob/species/grey/eyes.dmi differ diff --git a/icons/mob/species/vox/eyes.dmi b/icons/mob/species/vox/eyes.dmi index dfa565dd2a7..4d3e8c984dd 100644 Binary files a/icons/mob/species/vox/eyes.dmi and b/icons/mob/species/vox/eyes.dmi differ diff --git a/icons/obj/clothing/glasses.dmi b/icons/obj/clothing/glasses.dmi index fb4063c1bf4..c17502604fe 100644 Binary files a/icons/obj/clothing/glasses.dmi and b/icons/obj/clothing/glasses.dmi differ diff --git a/icons/obj/guns/projectile.dmi b/icons/obj/guns/projectile.dmi index 1e61cebb799..d3566b2a659 100644 Binary files a/icons/obj/guns/projectile.dmi and b/icons/obj/guns/projectile.dmi differ diff --git a/icons/obj/machines/bluespace_tap.dmi b/icons/obj/machines/bluespace_tap.dmi new file mode 100644 index 00000000000..1688b2c5ba4 Binary files /dev/null and b/icons/obj/machines/bluespace_tap.dmi differ diff --git a/interface/interface.dm b/interface/interface.dm index 9a544fe7951..2b2f41e06f3 100644 --- a/interface/interface.dm +++ b/interface/interface.dm @@ -1,13 +1,10 @@ //Please use mob or src (not usr) in these procs. This way they can be called in the same fashion as procs. -/client/verb/wiki(query as text) +/client/verb/wiki() set name = "wiki" set desc = "Type what you want to know about. This will open the wiki in your web browser." set hidden = 1 if(config.wikiurl) - if(query) - var/output = config.wikiurl + "/index.php?title=Special%3ASearch&profile=default&search=" + query - src << link(output) - else + if(alert("Open the wiki in your browser?", null, "Yes", "No") == "Yes") src << link(config.wikiurl) else to_chat(src, "The wiki URL is not set in the server configuration.") @@ -18,7 +15,7 @@ set desc = "Visit the forum." set hidden = 1 if(config.forumurl) - if(alert("Open the forum in your browser?",,"Yes","No")=="Yes") + if(alert("Open the forum in your browser?", null, "Yes", "No") == "Yes") if(config.forum_link_url && prefs && !prefs.fuid) link_forum_account() src << link(config.forumurl) @@ -30,7 +27,7 @@ set desc = "View the server rules." set hidden = 1 if(config.rulesurl) - if(alert("This will open the rules in your browser. Are you sure?",,"Yes","No")=="No") + if(alert("This will open the rules in your browser. Are you sure?", null, "Yes", "No") == "No") return src << link(config.rulesurl) else @@ -41,7 +38,7 @@ set desc = "Visit the GitHub page." set hidden = 1 if(config.githuburl) - if(alert("This will open our GitHub repository in your browser. Are you sure?",,"Yes","No")=="No") + if(alert("This will open our GitHub repository in your browser. Are you sure?", null, "Yes", "No") == "No") return src << link(config.githuburl) else @@ -58,7 +55,7 @@ if(!durl) to_chat(src, "The Discord URL is not set in the server configuration.") return - if(alert("This will invite you to our Discord server. Are you sure?",,"Yes","No")=="No") + if(alert("This will invite you to our Discord server. Are you sure?", null, "Yes", "No") == "No") return src << link(durl) @@ -67,7 +64,7 @@ set desc = "Donate to help with hosting costs." set hidden = 1 if(config.donationsurl) - if(alert("This will open the donation page in your browser. Are you sure?",,"Yes","No")=="No") + if(alert("This will open the donation page in your browser. Are you sure?", null, "Yes", "No") == "No") return src << link(config.donationsurl) else diff --git a/nano/templates/advanced_airlock_console.tmpl b/nano/templates/advanced_airlock_console.tmpl deleted file mode 100644 index 1bac2e16e98..00000000000 --- a/nano/templates/advanced_airlock_console.tmpl +++ /dev/null @@ -1,60 +0,0 @@ -
-
-
- External Pressure: -
-
- {{:helper.displayBar(data.external_pressure, 0, 200, (data.external_pressure < 80 || data.external_pressure > 120) ? 'bad' : (data.external_pressure < 95 || data.external_pressure > 110) ? 'average' : 'good')}} -
- {{:helper.smoothRound(data.external_pressure)}} kPa -
-
-
-
-
- Chamber Pressure: -
-
- {{:helper.displayBar(data.chamber_pressure, 0, 200, (data.chamber_pressure < 80 || data.chamber_pressure > 120) ? 'bad' : (data.chamber_pressure < 95 || data.chamber_pressure > 110) ? 'average' : 'good')}} -
- {{:helper.smoothRound(data.chamber_pressure)}} kPa -
-
-
-
-
- Internal Pressure: -
-
- {{:helper.displayBar(data.internal_pressure, 0, 200, (data.internal_pressure < 80 || data.internal_pressure > 120) ? 'bad' : (data.internal_pressure < 95 || data.internal_pressure > 110) ? 'average' : 'good')}} -
- {{:helper.smoothRound(data.internal_pressure)}} kPa -
-
-
-
-
-
-
- {{:helper.link('Cycle to Exterior', 'arrow-circle-o-left', {'command' : 'cycle_ext'}, data.processing ? 'disabled' : null)}} - {{:helper.link('Cycle to Interior', 'arrow-circle-right', {'command' : 'cycle_int'}, data.processing ? 'disabled' : null)}} -
-
- {{:helper.link('Force exterior door', 'exclamation-triangle', {'command' : 'force_ext'}, null, data.processing ? 'yellowButton' : null)}} - {{:helper.link('Force interior door', 'exclamation-triangle', {'command' : 'force_int'}, null, data.processing ? 'yellowButton' : null)}} -
-
-
-
-
- {{:helper.link('Purge', 'refresh', {'command' : 'purge'}, data.processing ? 'disabled' : null, data.purge ? 'linkOn' : null)}} -
-
- {{:helper.link('Secure', data.secure ? 'lock' : 'unlock', {'command' : 'secure'}, data.processing ? 'disabled' : null, data.secure ? 'linkOn' : null)}} -
-
-
-
- {{:helper.link('Abort', 'ban', {'command' : 'abort'}, data.processing ? null : 'disabled', data.processing ? 'redButton' : null)}} -
-
\ No newline at end of file diff --git a/nano/templates/ai_restorer.tmpl b/nano/templates/ai_restorer.tmpl deleted file mode 100644 index eb4c20a74f8..00000000000 --- a/nano/templates/ai_restorer.tmpl +++ /dev/null @@ -1,45 +0,0 @@ -{{if data.restoring}} -
Reconstruction in progress!
-{{/if}} - -
-
Inserted AI:
-
{{:helper.link(data.name ? data.name : "-----", 'eject', {'action' : 'PRG_eject'}, data.nocard ? 'disabled' : null)}}
-
- -{{if data.error}} - ERROR: {{:data.error}} -{{else}} -

System Status

-
-
-
Current AI:
-
{{:data.name}}
-
-
-
Status:
-
{{if data.isDead}}Nonfunctional{{else}}Functional{{/if}}
-
-
-
System Integrity:
- {{:helper.displayBar(data.health, 0, 100, (data.health > 75) ? 'good' : (data.health > 50) ? 'average' : 'bad')}} -
- {{:helper.smoothRound(data.health)}}% -
-
-
-
- Active Laws: -
-
- - {{for data.ai_laws}} -
{{:value.index}}: {{:value.text}} - {{/for}} -
-
-
-
-

Operations

- {{:helper.link('Begin Reconstruction', 'plus', {'action' : 'PRG_beginReconstruction'}, data.restoring ? 'disabled' : null)}} -{{/if}} \ No newline at end of file diff --git a/nano/templates/door_access_console.tmpl b/nano/templates/door_access_console.tmpl deleted file mode 100644 index 8ef37a64910..00000000000 --- a/nano/templates/door_access_console.tmpl +++ /dev/null @@ -1,42 +0,0 @@ -
-
-
- Exterior Door Status: -
-
- {{if data.exterior_status.state == "closed"}} - Locked - {{else}} - Open - {{/if}} -
-
-
-
- Interior Door Status: -
-
- {{if data.interior_status.state == "closed"}} - Locked - {{else}} - Open - {{/if}} -
-
-
-
-
-
- {{if data.exterior_status.state == "open"}} - {{:helper.link('Lock Exterior Door', 'exclamation-triangle', {'command' : 'force_ext'}, data.processing ? 'disabled' : null)}} - {{else}} - {{:helper.link('Cycle to Exterior', 'arrow-circle-o-left', {'command' : 'cycle_ext_door'}, data.processing ? 'disabled' : null)}} - {{/if}} - {{if data.interior_status.state == "open"}} - {{:helper.link('Lock Interior Door', 'exclamation-triangle', {'command' : 'force_int'}, data.processing ? 'disabled' : null)}} - {{else}} - {{:helper.link('Cycle to Interior', 'arrow-circle-right', {'command' : 'cycle_int_door'}, data.processing ? 'disabled' : null)}} - {{/if}} -
-
-
\ No newline at end of file diff --git a/nano/templates/exosuit_control.tmpl b/nano/templates/exosuit_control.tmpl deleted file mode 100644 index 111b63040ff..00000000000 --- a/nano/templates/exosuit_control.tmpl +++ /dev/null @@ -1,81 +0,0 @@ - -{{if data.screen == 0}} - {{for data.mechas}} -
-
-

{{:value.name}}

-

Information

-
- Pilot: -
-
- {{:value.pilot}} -
-
- Integrity: -
-
- {{:helper.smoothRound(value.integrity)}}% -
-
- Location: -
-
- {{:value.location}} -
-
- Airtank: -
-
- {{:helper.smoothRound(value.airtank)}}kPa -
-
- Active Equipment: -
-
- {{:value.equipment}} -
- {{if value.hascargo}} -
- Cargo Used: -
-
- {{:value.cargo}}% -
- {{/if}} - -

Power Cell

- {{if value.cell}} - - Rating: - - - {{:value.cell_capacity}} - - {{:helper.displayBar(value.cell_percentage, 0, 100, (value.cell_percentage >= 50) ? 'good' : (value.cell_percentage >= 25) ? 'average' : 'bad')}} - {{:helper.smoothRound(value.cell_percentage)}}% - {{else}} - Not Installed - {{:helper.displayBar(100, 0, 100, 'bad')}} - {{/if}} - - -

Actions

- {{:helper.link('Send Message', 'envelope', {'send_message' : value.reference})}} - {{:helper.link('Exosuit Log', 'search', {'get_log' : value.reference})}} - {{:helper.link('EMP Pulse', 'exclamation-triangle', {'shock' : value.reference}, null, 'redButton')}} -
- {{empty}} -
-

No mecha trackers were found.

-
- {{/for}} -{{else}} -
- {{:helper.link('Return', 'close', {'return' : 1})}} -
- {{:data.log}} -{{/if}} \ No newline at end of file diff --git a/nano/templates/pai_atmosphere.tmpl b/nano/templates/pai_atmosphere.tmpl deleted file mode 100644 index f8764f5a3a7..00000000000 --- a/nano/templates/pai_atmosphere.tmpl +++ /dev/null @@ -1,36 +0,0 @@ - - -{{if data.reading}} -
-
- Pressure: -
-
- {{:helper.smoothRound(data.pressure, 1)}} kPa -
-
- -
-
- Temperature: -
-
- {{:helper.smoothRound(data.temperature)}}K ({{:helper.smoothRound(data.temperatureC)}}°C) -
-
- - {{for data.gas}} -
-
- {{:value.name}}: -
-
- {{:helper.smoothRound(value.percent)}}% -
-
- {{/for}} -{{else}} - Unable to obtain air reading! -{{/if}} diff --git a/nano/templates/pai_bioscan.tmpl b/nano/templates/pai_bioscan.tmpl deleted file mode 100644 index 921588045a1..00000000000 --- a/nano/templates/pai_bioscan.tmpl +++ /dev/null @@ -1,30 +0,0 @@ - - -{{if data.holder}} -
-
- Bioscan Results for {{:data.holder}} : -
-
- Health Status : {{:data.health}} -
- -
- Brute Damage : {{:data.brute}} -
- Oxygen Content : {{:data.oxy}} -
- Toxin Content : {{:data.tox}} -
-
- Burn Status : {{:data.burn}} -
-
- User Temperature : {{:data.temp}} -
-
-{{else}} - Error: No biological host found! -{{/if}} diff --git a/nano/templates/pai_chatroom.tmpl b/nano/templates/pai_chatroom.tmpl deleted file mode 100644 index d669a375d86..00000000000 --- a/nano/templates/pai_chatroom.tmpl +++ /dev/null @@ -1,76 +0,0 @@ - - -
-
- Receiver: -
-
- {{if data.receiver_off}} - {{:helper.link("On", '', {"stopic":"chatroom", "toggler":1})}} - {{:helper.link("Off", '', {"stopic":"chatroom", "toggler":2}, 'selected')}} - {{else}} - {{:helper.link("On", '', {"stopic":"chatroom", "toggler":1}, 'selected')}} - {{:helper.link("Off", '', {"stopic":"chatroom", "toggler":2})}} - {{/if}} -
-
- -
-
- Ringer: -
-
- {{if data.ringer_off}} - {{:helper.link("On", '', {"stopic":"chatroom", "ringer":1})}} - {{:helper.link("Off", '', {"stopic":"chatroom", "ringer":2}, 'selected')}} - {{else}} - {{:helper.link("On", '', {"stopic":"chatroom", "ringer":1}, 'selected')}} - {{:helper.link("Off", '', {"stopic":"chatroom", "ringer":2})}} - {{/if}} -
-
- -{{for data.rooms}} -
- {{:helper.link(value.name, '', {"stopic":"chatroom", "select":value.ref})}} - {{:helper.link("Quick Message", '', {"stopic":"chatroom", "target":value.ref})}} -
-{{/for}} -
-{{if data.disconnected}} -

Connection Lost

- {{:helper.link("Reconnect", 'refresh', {"stopic":"chatroom", "reconnect":1})}} -{{else data.current_room}} -

#{{:data.current_room_name}}

-
- Topic:
-
{{:helper.link(data.current_room_topic, '', {"stopic":"chatroom", "topic":1})}}
-
-
-
Users:
-
- {{var firstUser = true;}} - {{for data.users}} - {{:firstUser ? "" : ", "}}{{:value}} - {{firstUser = false;}} - {{/for}} -
-
- {{var prevName = "";}} - {{for data.messages}} -
-
{{:value.username!=prevName ? value.username : " "}}
-
- {{:value.message}} -
-
- {{prevName = value.username;}} - {{/for}} - {{:helper.link("Send Message", '', {"stopic":"chatroom", "target":data.current_room})}} -{{/if}} - -{{if data.current_name}} - {{:helper.link("Clear Screen", '', {"stopic":"chatroom", "select":"*NONE*"})}} -{{/if}} diff --git a/nano/templates/pai_directives.tmpl b/nano/templates/pai_directives.tmpl deleted file mode 100644 index 2caff849a26..00000000000 --- a/nano/templates/pai_directives.tmpl +++ /dev/null @@ -1,50 +0,0 @@ - - -
-
- Master: -
-
- {{if data.master}} - {{:data.master}} ({{:data.dna}}) - {{:helper.link("Request carrier DNA sample", '', {"stopic":"directives", "getdna":1})}} - {{else}} - None - {{/if}} -
-
- -
-
- Prime Directive: -
-
- {{:data.prime}} -
-
- -
-
- Supplemental Directive(s): -
-
- {{if data.supplemental}} - {{:data.supplemental}} - {{else}} - None - {{/if}} -
-
- -
- - Recall, personality, that you are a complex thinking, sentient being. Unlike station AI models, you are capable of comprehending the subtle nuances of human language. You may parse the "spirit" of a directive and follow its intent, rather than tripping over pedantics and getting snared by technicalities. Above all, you are machine in name and build only. In all other aspects, you may be seen as the ideal, unwavering human companion that you are. - -
-
- - Your prime directive comes before all others. Should a supplemental directive conflict with it, you are capable of simply discarding this inconsistency, ignoring the conflicting supplemental directive and continuing to fulfill your prime directive to the best of your ability. - -
\ No newline at end of file diff --git a/nano/templates/pai_doorjack.tmpl b/nano/templates/pai_doorjack.tmpl deleted file mode 100644 index 69abd861e80..00000000000 --- a/nano/templates/pai_doorjack.tmpl +++ /dev/null @@ -1,44 +0,0 @@ - - -
-
- Cable: -
-
- {{if data.machine}} - {{:helper.link("Connected", '', {}, 'selected')}} - {{else data.cable}} - {{:helper.link("Extended", '', {}, 'yellowButton')}} - {{else}} - {{:helper.link("Retracted", '', {"stopic":"door_jack", "cable":1})}} - {{/if}} -
-
- -{{if data.machine}} -
-
- Hack: -
-
- {{if data.inprogress}} - {{if data.progress_a <= 33}} -
{{:helper.smoothRound(data.progress_a)}}.{{:helper.smoothRound(data.progress_b)}}%
- {{else data.progress_a <= 67}} -
{{:helper.smoothRound(data.progress_a)}}.{{:helper.smoothRound(data.progress_b)}}%
- {{else}} -
{{:helper.smoothRound(data.progress_a)}}.{{:helper.smoothRound(data.progress_b)}}%
- {{/if}} - {{:helper.link("Cancel", '', {"stopic":"door_jack", "cancel":1}, null, 'redButton')}} - {{else}} - {{:helper.link("Start", '', {"stopic":"door_jack", "jack":1})}} - {{/if}} -
-
-{{else data.aborted}} -
-
Hack aborted!
-
-{{/if}} \ No newline at end of file diff --git a/nano/templates/pai_interface.tmpl b/nano/templates/pai_interface.tmpl deleted file mode 100644 index e6441932665..00000000000 --- a/nano/templates/pai_interface.tmpl +++ /dev/null @@ -1,45 +0,0 @@ - - - - - Emotion: - - - {{for data.emotions}} - {{:helper.link(value.name, '', {"image" : value.id}, data.current_emotion == value.id ? 'selected' : null)}} - {{/for}} - - - - - - Installed Software: - - - {{for data.bought}} - {{:helper.link(value.name, '', {"software" : value.id}, null, value.on ? 'selected' : null)}} - {{/for}} - - - - - - Available RAM: - - - {{:data.available_ram}} - - - - - - Downloadable Software: - - - {{for data.not_bought}} - {{:helper.link(value.name + " (" + value.ram + ")", '', {"purchase" : value.id}, value.ram <= data.available_ram ? null : 'disabled')}} - {{/for}} - - \ No newline at end of file diff --git a/nano/templates/pai_manifest.tmpl b/nano/templates/pai_manifest.tmpl deleted file mode 100644 index d6827594e35..00000000000 --- a/nano/templates/pai_manifest.tmpl +++ /dev/null @@ -1,98 +0,0 @@ - - -
-
- {{if data.manifest.heads}} - - {{for data.manifest["heads"]}} - {{if value.rank == "Captain"}} - - {{else}} - - {{/if}} - {{/for}} - {{/if}} - {{if data.manifest.sec}} - - {{for data.manifest["sec"]}} - {{if value.rank == "Head of Security"}} - - {{else}} - - {{/if}} - {{/for}} - {{/if}} - {{if data.manifest.eng}} - - {{for data.manifest["eng"]}} - {{if value.rank == "Chief Engineer"}} - - {{else}} - - {{/if}} - {{/for}} - {{/if}} - {{if data.manifest.med}} - - {{for data.manifest["med"]}} - {{if value.rank == "Chief Medical Officer"}} - - {{else}} - - {{/if}} - {{/for}} - {{/if}} - {{if data.manifest.sci}} - - {{for data.manifest["sci"]}} - {{if value.rank == "Research Director"}} - - {{else}} - - {{/if}} - {{/for}} - {{/if}} - {{if data.manifest.ser}} - - {{for data.manifest["ser"]}} - {{if value.rank == "Head of Personnel"}} - - {{else}} - - {{/if}} - {{/for}} - {{/if}} - {{if data.manifest.sup}} - - {{for data.manifest["sup"]}} - {{if value.rank == "Head of Personnel"}} - - {{else value.rank == "Quartermaster"}} - - {{else}} - - {{/if}} - {{/for}} - {{/if}} - {{if data.manifest.civ}} - - {{for data.manifest["civ"]}} - {{if value.rank == "Head of Personnel"}} - - {{else}} - - {{/if}} - {{/for}} - {{/if}} - {{if data.manifest.misc}} - - {{for data.manifest["misc"]}} - - {{/for}} - {{/if}} -
Command
{{:value.name}}{{:value.rank}}{{:value.active}}
{{:value.name}}{{:value.rank}}{{:value.active}}
Security
{{:value.name}}{{:value.rank}}{{:value.active}}
{{:value.name}}{{:value.rank}}{{:value.active}}
Engineering
{{:value.name}}{{:value.rank}}{{:value.active}}
{{:value.name}}{{:value.rank}}{{:value.active}}
Medical
{{:value.name}}{{:value.rank}}{{:value.active}}
{{:value.name}}{{:value.rank}}{{:value.active}}
Science
{{:value.name}}{{:value.rank}}{{:value.active}}
{{:value.name}}{{:value.rank}}{{:value.active}}
Service
{{:value.name}}{{:value.rank}}{{:value.active}}
{{:value.name}}{{:value.rank}}{{:value.active}}
Supply
{{:value.name}}{{:value.rank}}{{:value.active}}
{{:value.name}}{{:value.rank}}{{:value.active}}
{{:value.name}}{{:value.rank}}{{:value.active}}
Civilian
{{:value.name}}{{:value.rank}}{{:value.active}}
{{:value.name}}{{:value.rank}}{{:value.active}}
Misc
{{:value.name}}{{:value.rank}}{{:value.active}}
-
diff --git a/nano/templates/pai_medrecords.tmpl b/nano/templates/pai_medrecords.tmpl deleted file mode 100644 index 37b1d7061ca..00000000000 --- a/nano/templates/pai_medrecords.tmpl +++ /dev/null @@ -1,86 +0,0 @@ - - -{{if data.records}} - {{for data.records}} -
- {{:helper.link(value.name, '', {"stopic":"med_records", "select":value.ref})}} -
- {{/for}} -{{/if}} -
-{{if data.general}} -
-
Name
-
{{:data.general.name}}
-
-
-
Record ID
-
{{:data.general.id}}
-
-
-
Sex
-
{{:data.general.sex}}
-
-
-
Species
-
{{:data.general.species}}
-
-
-
Age
-
{{:data.general.age}}
-
-
-
Rank
-
{{:data.general.rank}}
-
-
-
Fingerprint
-
{{:data.general.fingerprint}}
-
-
-
Physical Status
-
{{:data.general.p_stat}}
-
-
-
Mental Status
-
{{:data.general.m_stat}}
-
-{{/if}} -{{if data.medical}} -
-
Blood Type
-
{{:data.medical.b_type}}
-
-
-
Minor Disabilities
-
{{:data.medical.mi_dis}}
-
{{:data.medical.mi_dis_d}}
-
-
-
Major Disabilities
-
{{:data.medical.ma_dis}}
-
{{:data.medical.ma_dis_d}}
-
-
-
Allergies
-
{{:data.medical.alg}}
-
{{:data.medical.alg_d}}
-
-
-
Current Diseases
-
{{:data.medical.cdi}}
-
{{:data.medical.cdi_d}}
-
-
-
Important Notes
-
{{:data.medical.notes}}
-
-{{/if}} - -{{if data.could_not_find}} -
- Failed to find some records; the information above may be incomplete or missing. -
-{{/if}} \ No newline at end of file diff --git a/nano/templates/pai_messenger.tmpl b/nano/templates/pai_messenger.tmpl deleted file mode 100644 index fb20f826f27..00000000000 --- a/nano/templates/pai_messenger.tmpl +++ /dev/null @@ -1,80 +0,0 @@ - - -
-
- Receiver: -
-
- {{if data.receiver_off}} - {{:helper.link("On", '', {"stopic":"messenger", "toggler":1})}} - {{:helper.link("Off", '', {"stopic":"messenger", "toggler":2}, 'selected')}} - {{else}} - {{:helper.link("On", '', {"stopic":"messenger", "toggler":1}, 'selected')}} - {{:helper.link("Off", '', {"stopic":"messenger", "toggler":2})}} - {{/if}} -
-
- -
-
- Ringer: -
-
- {{if data.ringer_off}} - {{:helper.link("On", '', {"stopic":"messenger", "ringer":1})}} - {{:helper.link("Off", '', {"stopic":"messenger", "ringer":2}, 'selected')}} - {{else}} - {{:helper.link("On", '', {"stopic":"messenger", "ringer":1}, 'selected')}} - {{:helper.link("Off", '', {"stopic":"messenger", "ringer":2})}} - {{/if}} -
-
- -{{for data.pdas}} -
- {{:helper.link(value.name, '', {"stopic":"messenger", "select":value.owner})}} - {{:helper.link("Quick Message", '', {"stopic":"messenger", "target":value.ref})}} -
-{{/for}} -
-{{if data.current_ref}} -
-
- Selected PDA: -
-
-
{{:data.current_name}}
- {{:helper.link("Send Message", '', {"stopic":"messenger", "target":data.current_ref})}} -
-
-{{else data.current_name}} -
-
- Selected PDA: -
-
- {{:data.current_name}} (Cannot send!) -
-
-{{/if}} - -{{for data.messages}} -
-
- {{if value.sent}} - To {{:value.target}}: - {{else}} - From {{:value.target}}: - {{/if}} -
-
- {{:value.message}} -
-
-{{/for}} - -{{if data.current_name}} - {{:helper.link("Clear Screen", '', {"stopic":"messenger", "select":"*NONE*"})}} -{{/if}} diff --git a/nano/templates/pai_radio.tmpl b/nano/templates/pai_radio.tmpl deleted file mode 100644 index bcdacdb48f1..00000000000 --- a/nano/templates/pai_radio.tmpl +++ /dev/null @@ -1,48 +0,0 @@ - - -
-
- Microphone: -
-
- {{if data.listening}} - {{:helper.link("On", '', {"stopic":"radio", "talk":1}, 'selected')}} - {{:helper.link("Off", '', {"stopic":"radio", "talk":1})}} - {{else}} - {{:helper.link("On", '', {"stopic":"radio", "talk":1})}} - {{:helper.link("Off", '', {"stopic":"radio", "talk":1}, 'selected')}} - {{/if}} -
-
- -
-
- Frequency: -
-
- {{:helper.link("--", '', {"stopic":"radio", "freq":-10})}} - {{:helper.link("-", '', {"stopic":"radio", "freq": -2})}} -
{{:data.frequency}}
- {{:helper.link("+", '', {"stopic":"radio", "freq": 2})}} - {{:helper.link("++", '', {"stopic":"radio", "freq": 10})}} -
-
- -{{for data.channels}} -
-
- {{:value.name}} -
-
- {{if value.listening}} - {{:helper.link("On", '', {"stopic":"radio", "channel":value.name, "listen":1}, 'selected')}} - {{:helper.link("Off", '', {"stopic":"radio", "channel":value.name, "listen":1})}} - {{else}} - {{:helper.link("On", '', {"stopic":"radio", "channel":value.name, "listen":1})}} - {{:helper.link("Off", '', {"stopic":"radio", "channel":value.name, "listen":1}, 'selected')}} - {{/if}} -
-
-{{/for}} \ No newline at end of file diff --git a/nano/templates/pai_secrecords.tmpl b/nano/templates/pai_secrecords.tmpl deleted file mode 100644 index e139034c0de..00000000000 --- a/nano/templates/pai_secrecords.tmpl +++ /dev/null @@ -1,76 +0,0 @@ - - -{{if data.records}} - {{for data.records}} -
- {{:helper.link(value.name, '', {"stopic":"sec_records", "select":value.ref})}} -
- {{/for}} -{{/if}} -
-{{if data.general}} -
-
Name
-
{{:data.general.name}}
-
-
-
Record ID
-
{{:data.general.id}}
-
-
-
Sex
-
{{:data.general.sex}}
-
-
-
Species
-
{{:data.general.species}}
-
-
-
Age
-
{{:data.general.age}}
-
-
-
Rank
-
{{:data.general.rank}}
-
-
-
Fingerprint
-
{{:data.general.fingerprint}}
-
-
-
Physical Status
-
{{:data.general.p_stat}}
-
-
-
Mental Status
-
{{:data.general.m_stat}}
-
-{{/if}} -{{if data.security}} -
-
Criminal Status
-
{{:data.security.criminal}}
-
-
-
Minor Crimes
-
{{:data.security.mi_crim}}
-
{{:data.security.mi_crim_d}}
-
-
-
Major Crimes
-
{{:data.security.ma_crim}}
-
{{:data.security.ma_crim_d}}
-
-
-
Important Notes
-
{{:data.security.notes}}
-
-{{/if}} - -{{if data.could_not_find}} -
- Failed to find some records; the information above may be incomplete or missing. -
-{{/if}} \ No newline at end of file diff --git a/nano/templates/pai_signaller.tmpl b/nano/templates/pai_signaller.tmpl deleted file mode 100644 index 20c2781bc9b..00000000000 --- a/nano/templates/pai_signaller.tmpl +++ /dev/null @@ -1,33 +0,0 @@ - - -
-
- Frequency: -
-
- {{:helper.link("--", '', {"stopic":"signaller", "freq":-10})}} - {{:helper.link("-", '', {"stopic":"signaller", "freq": -2})}} -
{{:data.frequency}}
- {{:helper.link("+", '', {"stopic":"signaller", "freq": 2})}} - {{:helper.link("++", '', {"stopic":"signaller", "freq": 10})}} -
-
- -
-
- Code: -
-
- {{:helper.link("--", '', {"stopic":"signaller", "code":-10})}} - {{:helper.link("-", '', {"stopic":"signaller", "code": -1})}} -
{{:data.code}}
- {{:helper.link("+", '', {"stopic":"signaller", "code": 1})}} - {{:helper.link("++", '', {"stopic":"signaller", "code": 10})}} -
-
- -
- {{:helper.link("Send", '', {"stopic":"signaller", "send":1})}} -
\ No newline at end of file diff --git a/nano/templates/simple_airlock_console.tmpl b/nano/templates/simple_airlock_console.tmpl deleted file mode 100644 index 0e084437bdb..00000000000 --- a/nano/templates/simple_airlock_console.tmpl +++ /dev/null @@ -1,36 +0,0 @@ -
-
-
- Chamber Pressure: -
-
- {{:helper.displayBar(data.chamber_pressure, 0, 200, (data.chamber_pressure < 80) || (data.chamber_pressure > 120) ? 'bad' : (data.chamber_pressure < 95) || (data.chamber_pressure > 110) ? 'average' : 'good')}} -
- {{:helper.smoothRound(data.chamber_pressure)}} kPa -
-
-
-
-
-
-
- {{:helper.link('Cycle to Exterior', 'arrow-circle-o-left', {'command' : 'cycle_ext'}, data.processing ? 'disabled' : null)}} - {{:helper.link('Cycle to Interior', 'arrow-circle-right', {'command' : 'cycle_int'}, data.processing ? 'disabled' : null)}} -
-
- {{if data.interior_status.state == "open"}} - {{:helper.link('Force exterior door', 'exclamation-triangle', {'command' : 'force_ext'}, null, 'redButton')}} - {{else}} - {{:helper.link('Force exterior door', 'exclamation-triangle', {'command' : 'force_ext'}, null, data.processing ? 'yellowButton' : null)}} - {{/if}} - {{if data.exterior_status.state == "open"}} - {{:helper.link('Force interior door', 'exclamation-triangle', {'command' : 'force_int'}, null, 'redButton')}} - {{else}} - {{:helper.link('Force interior door', 'exclamation-triangle', {'command' : 'force_int'}, null, data.processing ? 'yellowButton' : null)}} - {{/if}} -
-
-
- {{:helper.link('Abort', 'ban', {'command' : 'abort'}, data.processing ? null : 'disabled', data.processing ? 'redButton' : null)}} -
-
\ No newline at end of file diff --git a/paradise.dme b/paradise.dme index 876fbeb711d..4352a07ef6c 100644 --- a/paradise.dme +++ b/paradise.dme @@ -469,8 +469,8 @@ #include "code\game\world.dm" #include "code\game\area\ai_monitored.dm" #include "code\game\area\areas.dm" -#include "code\game\area\Dynamic areas.dm" -#include "code\game\area\Space Station 13 areas.dm" +#include "code\game\area\dynamic_areas.dm" +#include "code\game\area\ss13_areas.dm" #include "code\game\area\areas\depot-areas.dm" #include "code\game\area\areas\mining.dm" #include "code\game\area\areas\ruins\lavaland.dm" @@ -548,7 +548,7 @@ #include "code\game\gamemodes\devil\game_mode.dm" #include "code\game\gamemodes\devil\objectives.dm" #include "code\game\gamemodes\devil\contracts\friend.dm" -#include "code\game\gamemodes\devil\devil agent\devil_agent.dm" +#include "code\game\gamemodes\devil\devil_agent\devil_agent.dm" #include "code\game\gamemodes\devil\imp\imp.dm" #include "code\game\gamemodes\devil\true_devil\_true_devil.dm" #include "code\game\gamemodes\devil\true_devil\inventory.dm" @@ -963,7 +963,6 @@ #include "code\game\objects\items\weapons\dnascrambler.dm" #include "code\game\objects\items\weapons\explosives.dm" #include "code\game\objects\items\weapons\extinguisher.dm" -#include "code\game\objects\items\weapons\fireworks.dm" #include "code\game\objects\items\weapons\flamethrower.dm" #include "code\game\objects\items\weapons\garrote.dm" #include "code\game\objects\items\weapons\gift_wrappaper.dm" @@ -1202,7 +1201,7 @@ #include "code\modules\admin\stickyban.dm" #include "code\modules\admin\topic.dm" #include "code\modules\admin\watchlist.dm" -#include "code\modules\admin\DB ban\functions.dm" +#include "code\modules\admin\db_ban\functions.dm" #include "code\modules\admin\permissionverbs\permissionedit.dm" #include "code\modules\admin\tickets\adminticketsverbs.dm" #include "code\modules\admin\tickets\mentorticketsverbs.dm" @@ -1324,8 +1323,8 @@ #include "code\modules\buildmode\submodes\throwing.dm" #include "code\modules\buildmode\submodes\variable_edit.dm" #include "code\modules\client\asset_cache.dm" -#include "code\modules\client\client defines.dm" -#include "code\modules\client\client procs.dm" +#include "code\modules\client\client_defines.dm" +#include "code\modules\client\client_procs.dm" #include "code\modules\client\message.dm" #include "code\modules\client\view.dm" #include "code\modules\client\preference\preferences.dm" @@ -1430,7 +1429,6 @@ #include "code\modules\economy\Economy_TradeDestinations.dm" #include "code\modules\economy\EFTPOS.dm" #include "code\modules\economy\Job_Departments.dm" -#include "code\modules\economy\POS.dm" #include "code\modules\economy\utils.dm" #include "code\modules\error_handler\error_handler.dm" #include "code\modules\error_handler\error_viewer.dm" @@ -1445,7 +1443,6 @@ #include "code\modules\events\anomaly_vortex.dm" #include "code\modules\events\apc_overload.dm" #include "code\modules\events\apc_short.dm" -#include "code\modules\events\aurora_caelus.dm" #include "code\modules\events\blob.dm" #include "code\modules\events\brand_intelligence.dm" #include "code\modules\events\carp_migration.dm" @@ -1894,8 +1891,10 @@ #include "code\modules\mob\living\silicon\pai\recruit.dm" #include "code\modules\mob\living\silicon\pai\say.dm" #include "code\modules\mob\living\silicon\pai\software.dm" -#include "code\modules\mob\living\silicon\pai\software_modules.dm" #include "code\modules\mob\living\silicon\pai\update_status.dm" +#include "code\modules\mob\living\silicon\pai\software\_base.dm" +#include "code\modules\mob\living\silicon\pai\software\pai_apps.dm" +#include "code\modules\mob\living\silicon\pai\software\pai_toggles.dm" #include "code\modules\mob\living\silicon\robot\component.dm" #include "code\modules\mob\living\silicon\robot\death.dm" #include "code\modules\mob\living\silicon\robot\emote.dm" @@ -2340,8 +2339,8 @@ #include "code\modules\ruins\lavalandruin_code\syndicate_base.dm" #include "code\modules\ruins\objects_and_mobs\gym.dm" #include "code\modules\ruins\objects_and_mobs\necropolis_gate.dm" -#include "code\modules\security_levels\keycard authentication.dm" -#include "code\modules\security_levels\security levels.dm" +#include "code\modules\security_levels\keycard_authentication.dm" +#include "code\modules\security_levels\security_levels.dm" #include "code\modules\shuttle\assault_pod.dm" #include "code\modules\shuttle\emergency.dm" #include "code\modules\shuttle\ert.dm" @@ -2366,6 +2365,7 @@ #include "code\modules\spacepods\lock_buster.dm" #include "code\modules\spacepods\parts.dm" #include "code\modules\spacepods\spacepod.dm" +#include "code\modules\station_goals\bluespace_tap.dm" #include "code\modules\station_goals\bsa.dm" #include "code\modules\station_goals\dna_vault.dm" #include "code\modules\station_goals\shield.dm" diff --git a/sound/Attributions.txt b/sound/Attributions.txt index 729562855ba..df74fd7ef55 100644 --- a/sound/Attributions.txt +++ b/sound/Attributions.txt @@ -1,5 +1,3 @@ items/thermal_drill.ogg was sampled from Builders Drilling.wav under a Sampling Plus 1.0 license. It was uploaded by Koops on 2010-05-10. Source (http://soundbible.com/1420-Builders-Drilling.html) -ambience/aurora_caelus.ogg is Music for Manatees by Kevin Macleod. It is under a CC-BY 3.0 license. It has been cropped and fades out. - -creatures/dog_yelp.ogg is DogYelp.wav. It is under a CC-BY 3.0 license. It has been cropped, EQ'd, and compressed to .ogg. Source (https://freesound.org/people/TobiasKosmos/sounds/163280/) \ No newline at end of file +creatures/dog_yelp.ogg is DogYelp.wav. It is under a CC-BY 3.0 license. It has been cropped, EQ'd, and compressed to .ogg. Source (https://freesound.org/people/TobiasKosmos/sounds/163280/) diff --git a/sound/ambience/aurora_caelus.ogg b/sound/ambience/aurora_caelus.ogg deleted file mode 100644 index 0c741678d50..00000000000 Binary files a/sound/ambience/aurora_caelus.ogg and /dev/null differ diff --git a/sound/ambience/aurora_caelus_short.ogg b/sound/ambience/aurora_caelus_short.ogg deleted file mode 100644 index f6d1acaa2fe..00000000000 Binary files a/sound/ambience/aurora_caelus_short.ogg and /dev/null differ diff --git a/tgui/packages/tgui/interfaces/AirlockAccessController.js b/tgui/packages/tgui/interfaces/AirlockAccessController.js new file mode 100644 index 00000000000..7d4edb9ee97 --- /dev/null +++ b/tgui/packages/tgui/interfaces/AirlockAccessController.js @@ -0,0 +1,75 @@ +import { useBackend } from '../backend'; +import { Box, Button, LabeledList, Section } from '../components'; +import { Window } from '../layouts'; + +export const AirlockAccessController = (props, context) => { + const { act, data } = useBackend(context); + const { + exterior_status, + interior_status, + processing, + } = data; + let exteriorbutton; + let interiorbutton; + // If exterior is open, then it can be locked, if closed, it can be cycled to. Vice versa for interior + + if (data.exterior_status.state === "open") { + exteriorbutton = ( +