Merge remote-tracking branch 'upstream/master' into xenoweedspread

This commit is contained in:
xxalpha
2015-09-02 12:42:35 +01:00
358 changed files with 2250 additions and 1441 deletions
+3 -2
View File
@@ -5,8 +5,9 @@
**Website:** http://www.tgstation13.org <BR>
**Code:** https://github.com/tgstation/-tg-station <BR>
**Wiki** http://tgstation13.org/wiki/Main_Page<BR>
**IRC:** irc://irc.rizon.net/coderbus <BR>
**Wiki** http://tgstation13.org/wiki/Main_Page <BR>
**IRC:** irc://irc.rizon.net/coderbus or if you dont have an IRC client, you can click [here](https://kiwiirc.com/client/irc.rizon.net:6667/?&theme=cli#coderbus).<BR>
##DOWNLOADING
@@ -1719,7 +1719,7 @@
"aHc" = (/obj/structure/closet/crate,/obj/item/weapon/coin/silver,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
"aHd" = (/obj/machinery/status_display{density = 0; pixel_x = 0; pixel_y = 0; supply_display = 1},/turf/simulated/wall,/area/quartermaster/storage)
"aHe" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/quartermaster/storage)
"aHf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorminingglass.dmi'; name = "Vault Storage"},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/construction/Storage{name = "Storage Wing"})
"aHf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{ name = "Vault Storage"},/turf/simulated/floor/plasteel{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/construction/Storage{name = "Storage Wing"})
"aHg" = (/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor/plasteel{icon_state = "bot"},/area/quartermaster/storage)
"aHh" = (/obj/structure/grille,/obj/structure/window/fulltile,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/storage/primary)
"aHi" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/engine/chiefs_office)
@@ -1800,10 +1800,10 @@
"aIF" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/quartermaster/storage)
"aIG" = (/obj/machinery/firealarm{pixel_y = 27},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/quartermaster/storage)
"aIH" = (/obj/machinery/light_switch{pixel_y = 28},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/quartermaster/storage)
"aII" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{glass = 0; icon = 'icons/obj/doors/Doormining.dmi'; name = "Cargo Bay"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "48;50"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/construction/Storage{name = "Storage Wing"})
"aII" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{glass = 0; name = "Cargo Bay"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "48;50"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/construction/Storage{name = "Storage Wing"})
"aIJ" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 8},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel{dir = 9; icon_state = "warning"},/area/construction/Storage{name = "Storage Wing"})
"aIK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/light/small{dir = 1},/obj/structure/sign/securearea{pixel_y = 30},/turf/simulated/floor/plasteel{dir = 5; icon_state = "warning"},/area/construction/Storage{name = "Storage Wing"})
"aIL" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{glass = 0; icon = 'icons/obj/doors/Doormining.dmi'; name = "Cargo Bay"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "48;50"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/construction/Storage{name = "Storage Wing"})
"aIL" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{glass = 0; name = "Cargo Bay"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "48;50"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/construction/Storage{name = "Storage Wing"})
"aIM" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = -28; pixel_y = 23},/obj/machinery/status_display{density = 0; pixel_x = 0; pixel_y = 32; supply_display = 1},/obj/machinery/conveyor{dir = 1; id = "QMLoad2"; movedir = 2},/turf/simulated/floor/plating,/area/quartermaster/storage)
"aIN" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"})
"aIO" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{dir = 8; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"})
@@ -1859,7 +1859,7 @@
"aJM" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warningcorner"; tag = "icon-warningcorner (EAST)"},/area/quartermaster/storage)
"aJN" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/quartermaster/storage)
"aJO" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/quartermaster/storage)
"aJP" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/glass_mining{glass = 0; icon = 'icons/obj/doors/Doormining.dmi'; name = "Cargo Bay"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "48;50"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/construction/Storage{name = "Storage Wing"})
"aJP" = (/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/airlock/glass_mining{glass = 0; name = "Cargo Bay"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "48;50"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/construction/Storage{name = "Storage Wing"})
"aJQ" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/construction/Storage{name = "Storage Wing"})
"aJR" = (/obj/machinery/camera{c_tag = "Cargo Bay - Storage Wing Entrance"; dir = 1; network = list("SS13")},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"; tag = "icon-warnwhite (NORTHEAST)"},/area/construction/Storage{name = "Storage Wing"})
"aJS" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/power/apc{dir = 2; name = "Storage Wing APC"; pixel_x = 0; pixel_y = -27},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "browncorner"},/area/construction/Storage{name = "Storage Wing"})
@@ -1937,8 +1937,8 @@
"aLm" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;63;48;50"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
"aLn" = (/turf/simulated/wall,/area/storage/primary)
"aLo" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/quartermaster/office{name = "\improper Cargo Office"})
"aLp" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorminingglass.dmi'; name = "Primary Tool Storage"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "brown"},/area/storage/primary)
"aLq" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorminingglass.dmi'; name = "Primary Tool Storage"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{dir = 2; icon_state = "brown"},/area/storage/primary)
"aLp" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{ name = "Primary Tool Storage"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "brown"},/area/storage/primary)
"aLq" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{ name = "Primary Tool Storage"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{dir = 2; icon_state = "brown"},/area/storage/primary)
"aLr" = (/turf/simulated/wall/r_wall,/area/storage/primary)
"aLs" = (/turf/simulated/wall/r_wall,/area/turret_protected/ai_upload)
"aLt" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 8; icon_state = "redcorner"},/area/hallway/primary/fore)
@@ -2575,8 +2575,8 @@
"aXA" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/turf/simulated/floor/plating,/area/engine/break_room)
"aXB" = (/turf/simulated/floor/plating,/obj/structure/shuttle/engine/propulsion/burst,/turf/simulated/wall/shuttle{tag = "icon-swall_f9"; icon_state = "swall_f9"; dir = 2},/area/shuttle/pod_1)
"aXC" = (/turf/simulated/wall/shuttle{tag = "icon-swall12"; icon_state = "swall12"; dir = 2},/area/shuttle/arrival)
"aXD" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorminingglass.dmi'; name = "Primary Tool Storage"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "brown"},/area/storage/primary)
"aXE" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorminingglass.dmi'; name = "Primary Tool Storage"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{dir = 1; icon_state = "brown"},/area/storage/primary)
"aXD" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{ name = "Primary Tool Storage"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "brown"},/area/storage/primary)
"aXE" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{ name = "Primary Tool Storage"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{dir = 1; icon_state = "brown"},/area/storage/primary)
"aXF" = (/obj/structure/closet/firecloset,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central)
"aXG" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central)
"aXH" = (/obj/structure/closet/emcloset,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/central)
@@ -2821,8 +2821,8 @@
"bcm" = (/obj/structure/closet/wardrobe/engineering_yellow,/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/engine/engineering)
"bcn" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/storage/tools)
"bco" = (/turf/simulated/wall,/area/quartermaster/office{name = "\improper Cargo Office"})
"bcp" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{glass = 0; icon = 'icons/obj/doors/Doormining.dmi'; name = "Cargo Bay"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "48;50"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/quartermaster/office{name = "\improper Cargo Office"})
"bcq" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{glass = 0; icon = 'icons/obj/doors/Doormining.dmi'; name = "Cargo Bay"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "48;50"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/quartermaster/office{name = "\improper Cargo Office"})
"bcp" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{glass = 0; name = "Cargo Bay"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "48;50"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/quartermaster/office{name = "\improper Cargo Office"})
"bcq" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_mining{glass = 0; name = "Cargo Bay"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "48;50"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/quartermaster/office{name = "\improper Cargo Office"})
"bcr" = (/obj/item/weapon/stamp{pixel_x = -3; pixel_y = 3},/obj/item/weapon/stamp/denied{pixel_x = 4; pixel_y = -2},/obj/structure/table/reinforced,/obj/structure/noticeboard{desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; name = "requests board"; pixel_x = 32; pixel_y = 32},/obj/machinery/requests_console{department = "Cargo Bay"; departmentType = 2; pixel_x = 0; pixel_y = 30},/turf/simulated/floor/plasteel{dir = 9; icon_state = "brown"},/area/quartermaster/office{name = "\improper Cargo Office"})
"bcs" = (/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen/red,/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{dir = 5; icon_state = "brown"},/area/quartermaster/office{name = "\improper Cargo Office"})
"bct" = (/obj/machinery/computer/ordercomp,/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/hallway/primary/port)
@@ -3126,14 +3126,14 @@
"bif" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central)
"big" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "yellowcorner"},/area/hallway/primary/central)
"bih" = (/obj/machinery/computer/security,/turf/simulated/floor/plasteel{dir = 1; icon_state = "darkred"; tag = "icon-darkblue"},/area/bridge)
"bii" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorengglass.dmi'; name = "Auxiliary Tool Storage"; req_access_txt = "12"},/turf/simulated/floor/plasteel,/area/storage/tools)
"bii" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{ name = "Auxiliary Tool Storage"; req_access_txt = "12"},/turf/simulated/floor/plasteel,/area/storage/tools)
"bij" = (/obj/structure/grille,/obj/structure/window/fulltile,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/storage/art)
"bik" = (/obj/structure/closet/emcloset,/obj/structure/sign/map/left{icon_state = "map-left-MS"; pixel_y = 32},/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/starboard)
"bil" = (/obj/structure/sign/map/right{desc = "A framed picture of the station. Clockwise from security in red at the top, you see engineering in yellow, science in purple, escape in checkered red-and-white, medbay in green, arrivals in checkered red-and-blue, and then cargo in brown."; icon_state = "map-right-MS"; pixel_y = 32},/obj/structure/closet/firecloset,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/hallway/primary/starboard)
"bim" = (/turf/simulated/wall,/area/hallway/primary/starboard)
"bin" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/starboard)
"bio" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/storage/tech)
"bip" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/engineering{icon = 'icons/obj/doors/Dooreng.dmi'; name = "Tech Storage"; req_access_txt = "0"; req_one_access_txt = "23;30"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/storage/tech)
"bip" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/engineering{ name = "Tech Storage"; req_access_txt = "0"; req_one_access_txt = "23;30"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/storage/tech)
"biq" = (/obj/item/device/flashlight{pixel_x = 1; pixel_y = 5},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/maintcentral{name = "Central Maintenance"})
"bir" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "dark"},/area/engine/break_room)
"bis" = (/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/computer/prisoner,/turf/simulated/floor/plasteel{dir = 5; icon_state = "darkred"; tag = "icon-darkblue"},/area/bridge)
@@ -3224,7 +3224,7 @@
"bjZ" = (/obj/structure/table/wood,/obj/machinery/recharger{pixel_y = 4},/turf/simulated/floor/wood,/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"bka" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=14.2-Central-CrewQuarters"; location = "14-Starboard-Central"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/hallway/primary/central)
"bkb" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 8},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "yellowcorner"},/area/hallway/primary/central)
"bkc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorglass.dmi'; name = "Starboard Primary Hallway"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellowcorner"},/area/hallway/primary/starboard)
"bkc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{ name = "Starboard Primary Hallway"},/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellowcorner"},/area/hallway/primary/starboard)
"bkd" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellowcorner"},/area/hallway/primary/starboard)
"bke" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 2},/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellowcorner"},/area/hallway/primary/starboard)
"bkf" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{dir = 1; icon_state = "yellowcorner"},/area/hallway/primary/starboard)
@@ -3315,7 +3315,7 @@
"blM" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central)
"blN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plasteel,/area/hallway/primary/central)
"blO" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/disposalpipe/junction{icon_state = "pipe-j2"; dir = 4},/turf/simulated/floor/plasteel,/area/hallway/primary/central)
"blP" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorglass.dmi'; name = "Starboard Primary Hallway"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/primary/starboard)
"blP" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{ name = "Starboard Primary Hallway"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/primary/starboard)
"blQ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/primary/starboard)
"blR" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/hallway/primary/starboard)
"blS" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/hallway/primary/starboard)
@@ -3401,7 +3401,7 @@
"bnu" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 8; icon_state = "neutralcorner"},/area/hallway/primary/central)
"bnv" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=13.1-Engineering-Enter"; location = "12-Central-Starboard"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plasteel,/area/hallway/primary/central)
"bnw" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/central)
"bnx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorglass.dmi'; name = "Starboard Primary Hallway"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard)
"bnx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{ name = "Starboard Primary Hallway"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard)
"bny" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plasteel{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard)
"bnz" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 1; initialize_directions = 11},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard)
"bnA" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 2; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard)
@@ -3498,7 +3498,7 @@
"bpn" = (/obj/machinery/light{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/central)
"bpo" = (/turf/simulated/wall,/area/storage/art)
"bpp" = (/obj/structure/reagent_dispensers/fueltank,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/maintcentral{name = "Central Maintenance"})
"bpq" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorengglass.dmi'; name = "Art Storage"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/storage/art)
"bpq" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{ name = "Art Storage"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/storage/art)
"bpr" = (/obj/structure/sign/directions/security{desc = "A direction sign, pointing out which way the security department is."; dir = 1; icon_state = "direction_sec"; pixel_x = 0; pixel_y = 8; tag = "icon-direction_sec (NORTH)"},/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the engineering department is."; dir = 4; icon_state = "direction_eng"; pixel_y = 0; tag = "icon-direction_eng (EAST)"},/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the bridge is."; dir = 2; icon_state = "direction_bridge"; name = "bridge"; pixel_y = -8; tag = "icon-direction_bridge (EAST)"},/turf/simulated/wall/r_wall,/area/storage/tools)
"bps" = (/obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden,/turf/simulated/floor/plasteel{dir = 1; icon_state = "darkbluecorners"; tag = "icon-darkbluecorners"},/area/turret_protected/aisat_interior)
"bpt" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/maintenance/starboard)
@@ -4487,7 +4487,7 @@
"bIo" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/stool{pixel_y = 8},/turf/simulated/floor/wood,/area/crew_quarters/bar)
"bIp" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 2; on = 1},/turf/simulated/floor/wood,/area/crew_quarters/bar)
"bIq" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/item/toy/cards/deck{pixel_y = 4},/obj/structure/table/wood/poker,/turf/simulated/floor/wood,/area/crew_quarters/bar)
"bIr" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/Doormaint.dmi'; name = "Theatre Stage"; req_access_txt = "0"; req_one_access_txt = "12;46"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/theatre)
"bIr" = (/obj/machinery/door/airlock{ name = "Theatre Stage"; req_access_txt = "0"; req_one_access_txt = "12;46"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/theatre)
"bIs" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 8; external_pressure_bound = 0; frequency = 1441; id_tag = "waste_out"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/atmos)
"bIt" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel,/area/atmos)
"bIu" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plasteel{dir = 4; icon_state = "loadingarea"; tag = "loading"},/area/atmos)
@@ -4752,7 +4752,7 @@
"bNt" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 8; external_pressure_bound = 0; frequency = 1441; id_tag = "n2o_out"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine/n20,/area/atmos)
"bNu" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters/preopen{id = "kitchen"; name = "Serving Hatch"},/obj/item/weapon/reagent_containers/food/condiment/saltshaker{pixel_x = -3; pixel_y = 0},/obj/item/weapon/reagent_containers/food/condiment/peppermill{pixel_x = 3},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen)
"bNv" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{dir = 1},/turf/simulated/floor/plasteel{dir = 4; icon_state = "neutralcorner"},/area/bridge/meeting_room{name = "\improper Command Hallway"})
"bNw" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock{icon = 'icons/obj/doors/Doorsilver.dmi'; name = "Kitchen"; req_access_txt = "28"},/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen)
"bNw" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock{ name = "Kitchen"; req_access_txt = "28"},/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen)
"bNx" = (/turf/simulated/floor/engine/n20,/area/atmos)
"bNy" = (/obj/structure/sign/atmosplaque{desc = "A guide to the exhibit, detailing the constructive and destructive applications of modern mech appliances, as well as the development of the uncorruptable cyborg servants of tomorrow, available today."; icon_state = "kiddieplaque"; name = "\improper 'Perfect Machine' sign"; pixel_x = 0; pixel_y = 32},/obj/structure/showcase{desc = "This cyborg looks frighteningly robust, with cold unseeing eyes. Signs praise the incorruptible nature of synthetics."; dir = 2; icon = 'icons/mob/robots.dmi'; icon_state = "Security"; name = "'Perfect Machine' cyborg exhibit"; pixel_y = 3},/obj/structure/window/reinforced,/turf/simulated/floor/carpet,/area/assembly/showroom{name = "\improper Corporate Showroom"})
"bNz" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor/plasteel,/area/atmos)
@@ -4816,7 +4816,7 @@
"bOF" = (/obj/machinery/bluespace_beacon,/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/teleporter{name = "\improper Teleporter Room"})
"bOG" = (/obj/structure/grille,/obj/structure/window/fulltile,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/medical/surgery)
"bOH" = (/turf/simulated/wall/r_wall,/area/assembly/showroom{name = "\improper Corporate Showroom"})
"bOI" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{icon = 'icons/obj/doors/Doorele.dmi'; name = "Corporate Showroom"; req_access_txt = "19"},/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"})
"bOI" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{ name = "Corporate Showroom"; req_access_txt = "19"},/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"})
"bOJ" = (/obj/machinery/portable_atmospherics/canister/sleeping_agent/roomfiller{valve_open = 1},/turf/simulated/floor/engine/n20,/area/atmos)
"bOK" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/gateway)
"bOL" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/gateway)
@@ -4953,7 +4953,7 @@
"bRm" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;27"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
"bRn" = (/obj/structure/table/wood,/obj/item/weapon/paper,/turf/simulated/floor/wood,/area/security/vacantoffice)
"bRo" = (/obj/structure/table/wood,/obj/item/weapon/folder/white,/turf/simulated/floor/wood,/area/security/vacantoffice)
"bRp" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/Doormaint.dmi'; name = "Theatre Backstage"; req_access_txt = "46"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/theatre)
"bRp" = (/obj/machinery/door/airlock{ name = "Theatre Backstage"; req_access_txt = "46"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/theatre)
"bRq" = (/obj/structure/table,/obj/item/clothing/mask/cigarette/pipe,/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
"bRr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2{name = "Port Maintenance"})
"bRs" = (/obj/machinery/atmospherics/components/unary/portables_connector/visible{dir = 4},/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor/plasteel{icon_state = "redfull"},/area/atmos)
@@ -5074,7 +5074,7 @@
"bTD" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/gateway)
"bTE" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 2; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/gateway)
"bTF" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/gateway)
"bTG" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{icon = 'icons/obj/doors/Doorcomglass.dmi'; name = "Gateway Chamber"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/gateway)
"bTG" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{ name = "Gateway Chamber"},/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plasteel,/area/gateway)
"bTH" = (/obj/machinery/atmospherics/components/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/gateway)
"bTI" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel,/area/gateway)
"bTJ" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 4; on = 1},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/gateway)
@@ -5159,7 +5159,7 @@
"bVk" = (/obj/structure/extinguisher_cabinet{pixel_x = 0; pixel_y = -30},/obj/structure/table,/obj/machinery/reagentgrinder,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen)
"bVl" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen)
"bVm" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen)
"bVn" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/Doorsilver.dmi'; name = "Kitchen Cold Room"; req_access_txt = "28"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/crew_quarters/kitchen)
"bVn" = (/obj/machinery/door/airlock{ name = "Kitchen Cold Room"; req_access_txt = "28"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/crew_quarters/kitchen)
"bVo" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/crew_quarters/kitchen)
"bVp" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/camera{c_tag = "Kitchen - Coldroom"; dir = 1; network = list("SS13")},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/crew_quarters/kitchen)
"bVq" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/light_switch{pixel_y = -26},/obj/machinery/light,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "showroomfloor"},/area/crew_quarters/kitchen)
@@ -5199,15 +5199,15 @@
"bVY" = (/obj/machinery/door/poddoor/shutters{id = "teleshutter"; name = "Teleporter Access Shutter"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/teleporter{name = "\improper Teleporter Room"})
"bVZ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/research{name = "Research and Development Lab"; req_access_txt = "7"},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitepurplefull"; tag = "icon-whitehall (WEST)"},/area/toxins/lab)
"bWa" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurple"},/area/toxins/explab)
"bWb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{icon = 'icons/obj/doors/Doorele.dmi'; name = "Corporate Showroom"; req_access_txt = "19"},/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"})
"bWb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{ name = "Corporate Showroom"; req_access_txt = "19"},/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"})
"bWc" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters/preopen{id = "kitchen"; name = "Serving Hatch"},/obj/item/weapon/storage/fancy/donut_box,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/kitchen)
"bWd" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{icon = 'icons/obj/doors/Doorele.dmi'; name = "Corporate Showroom"; req_access_txt = "19"},/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"})
"bWd" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/command{ name = "Corporate Showroom"; req_access_txt = "19"},/turf/simulated/floor/wood,/area/assembly/showroom{name = "\improper Corporate Showroom"})
"bWe" = (/obj/machinery/door/firedoor,/obj/machinery/door/poddoor/shutters{id = "gateshutter"; name = "Gateway Access Shutter"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/gateway)
"bWf" = (/obj/machinery/atmospherics/components/unary/heat_reservoir/heater{dir = 8; tag = ""},/turf/simulated/floor/plasteel,/area/atmos)
"bWg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{dir = 1; icon_state = "neutralcorner"},/area/hallway/primary/central)
"bWh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor/plasteel{dir = 2; icon_state = "greencorner"},/area/hallway/primary/central)
"bWi" = (/turf/simulated/wall,/area/hydroponics)
"bWj" = (/obj/machinery/door/poddoor/shutters/preopen{id = "kitchenhydro"; name = "Service Shutter"},/obj/machinery/door/airlock/glass_medical{icon = 'icons/obj/doors/Doorglass.dmi'; id_tag = ""; name = "Service Door"; req_access_txt = "0"; req_one_access_txt = "35;28"},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/hydroponics)
"bWj" = (/obj/machinery/door/poddoor/shutters/preopen{id = "kitchenhydro"; name = "Service Shutter"},/obj/machinery/door/airlock/glass_medical{ id_tag = ""; name = "Service Door"; req_access_txt = "0"; req_one_access_txt = "35;28"},/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/hydroponics)
"bWk" = (/obj/structure/table/reinforced,/obj/machinery/door/window/eastleft{dir = 1; name = "Kitchen Window"; req_access_txt = "28"; req_one_access_txt = "0"},/obj/machinery/door/firedoor,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/item/weapon/paper,/obj/machinery/door/window/eastleft{dir = 2; name = "Hydroponics Window"; req_access_txt = "0"; req_one_access_txt = "30;35"},/turf/simulated/floor/plasteel{icon_state = "delivery"; name = "floor"},/area/hydroponics)
"bWl" = (/obj/machinery/smartfridge,/turf/simulated/wall,/area/hydroponics)
"bWm" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{dir = 8; initialize_directions = 11},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/crew_quarters/kitchen)
@@ -5608,7 +5608,7 @@
"cdR" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hallway/primary/central)
"cdS" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hallway/primary/central)
"cdT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hallway/primary/central)
"cdU" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{icon = 'icons/obj/doors/Doorglass.dmi'; id_tag = ""; name = "Hydroponics"; req_access_txt = "35"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics)
"cdU" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{ id_tag = ""; name = "Hydroponics"; req_access_txt = "35"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "hydrofloor"},/area/hydroponics)
"cdV" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 10; icon_state = "green"},/area/hydroponics)
"cdW" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{icon_state = "green"; dir = 6},/area/hydroponics)
"cdX" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel{dir = 10; icon_state = "green"},/area/hydroponics)
@@ -5959,8 +5959,8 @@
"ckE" = (/obj/structure/noticeboard{desc = "A board for pinning important notices upon."; name = "notice board"; pixel_x = 0; pixel_y = 31},/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/toxins/lab)
"ckF" = (/turf/simulated/floor/plasteel{dir = 1; icon_state = "whitepurple"},/area/toxins/lab)
"ckG" = (/obj/machinery/power/apc{dir = 8; name = "Incinerator APC"; pixel_x = -24; pixel_y = 0},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plasteel{icon_state = "floorgrime"},/area/maintenance/incinerator)
"ckH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{glass = 0; icon = 'icons/obj/doors/Doorresearch.dmi'; id_tag = "ResearchFoyer"; name = "Research Division"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "47"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/medical/research{name = "Research Division"})
"ckI" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{glass = 0; icon = 'icons/obj/doors/Doorresearch.dmi'; id_tag = ""; name = "Research Division"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "47"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/medical/research{name = "Research Division"})
"ckH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{glass = 0; id_tag = "ResearchFoyer"; name = "Research Division"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "47"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/medical/research{name = "Research Division"})
"ckI" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{glass = 0; id_tag = ""; name = "Research Division"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "47"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/medical/research{name = "Research Division"})
"ckJ" = (/turf/simulated/wall/r_wall,/area/security/checkpoint/science{name = "Security Post - Research Division"})
"ckK" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_security{name = "Security Post - Research Division"; req_access_txt = "63"},/turf/simulated/floor/plasteel{icon_state = "redfull"},/area/security/checkpoint/science{name = "Security Post - Research Division"})
"ckL" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance{req_access_txt = "0"; req_one_access_txt = "12;47"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
@@ -6236,10 +6236,10 @@
"cpY" = (/obj/machinery/r_n_d/destructive_analyzer,/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 1; icon_state = "warning"},/area/toxins/lab)
"cpZ" = (/turf/simulated/floor/plasteel{dir = 8; icon_state = "whitepurple"},/area/toxins/lab)
"cqa" = (/obj/item/stack/sheet/glass{amount = 50; pixel_x = 3; pixel_y = 3},/obj/item/stack/sheet/metal{amount = 50},/obj/item/clothing/glasses/welding,/obj/structure/table,/turf/simulated/floor/plasteel{dir = 4; icon_state = "warning"},/area/toxins/lab)
"cqb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{glass = 0; icon = 'icons/obj/doors/Doorresearch.dmi'; id_tag = ""; name = "Research Division"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "47"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/medical/research{name = "Research Division"})
"cqb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment,/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass_medical{glass = 0; id_tag = ""; name = "Research Division"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "47"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/medical/research{name = "Research Division"})
"cqc" = (/obj/machinery/door/window/westleft{dir = 2; name = "Research Division Deliveries"; req_access_txt = "47"},/turf/simulated/floor/plasteel{icon_state = "delivery"},/area/maintenance/aft{name = "Aft Maintenance"})
"cqd" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/plasteel{dir = 8; icon_state = "warning"},/area/toxins/explab)
"cqe" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/glass_medical{glass = 0; icon = 'icons/obj/doors/Doorresearch.dmi'; id_tag = ""; name = "Research Break Room"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "47"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"})
"cqe" = (/obj/machinery/door/firedoor,/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/glass_medical{glass = 0; id_tag = ""; name = "Research Break Room"; opacity = 1; req_access_txt = "0"; req_one_access_txt = "47"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/medical/research{name = "Research Division"})
"cqf" = (/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/window/reinforced/tinted{dir = 5; health = 120; icon_state = "twindow"; reinf = 0},/turf/simulated/floor/plating,/area/medical/research{name = "Research Division"})
"cqg" = (/obj/structure/grille,/obj/structure/window/reinforced/fulltile,/obj/machinery/atmospherics/pipe/simple/general/visible,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/incinerator)
"cqh" = (/obj/item/candle,/obj/machinery/light_switch{pixel_x = -27},/obj/effect/decal/cleanable/cobweb,/obj/structure/table/wood,/turf/simulated/floor/plasteel{tag = "icon-vault"; icon_state = "vault"},/area/chapel/main)
@@ -7438,8 +7438,8 @@
"cND" = (/obj/machinery/atmospherics/components/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor/plasteel{icon_state = "white"},/area/medical/virology)
"cNE" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor/plasteel{dir = 4; icon_state = "whitegreen"},/area/medical/virology)
"cNF" = (/turf/simulated/wall,/area/chapel/office)
"cNG" = (/obj/machinery/door/airlock/centcom{icon = 'icons/obj/doors/Doormaint.dmi'; layer = 2.7; name = "Crematorium Maintenance"; opacity = 1; req_access_txt = "27"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"cNH" = (/obj/machinery/door/airlock/centcom{icon = 'icons/obj/doors/Doormaint.dmi'; name = "Chapel Office Maintenance"; opacity = 1; req_access_txt = "27"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"cNG" = (/obj/machinery/door/airlock/centcom{ layer = 2.7; name = "Crematorium Maintenance"; opacity = 1; req_access_txt = "27"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"cNH" = (/obj/machinery/door/airlock/centcom{ name = "Chapel Office Maintenance"; opacity = 1; req_access_txt = "27"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"cNI" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"cNJ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
"cNK" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft{name = "Aft Maintenance"})
@@ -7832,7 +7832,7 @@
"cVj" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"})
"cVk" = (/obj/structure/closet,/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"})
"cVl" = (/obj/item/weapon/crowbar/red,/obj/item/weapon/wrench,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"})
"cVm" = (/obj/machinery/door/airlock/command{icon = 'icons/obj/doors/Doorele.dmi'; name = "Test Chamber Maintenance"; req_access_txt = "47"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"})
"cVm" = (/obj/machinery/door/airlock/command{ name = "Test Chamber Maintenance"; req_access_txt = "47"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"})
"cVn" = (/obj/machinery/atmospherics/pipe/simple/general/visible,/obj/structure/window/reinforced{dir = 4},/obj/machinery/button/ignition{id = "Xenobio"; pixel_x = -6; pixel_y = -2},/obj/machinery/button/door{id = "Xenolab"; name = "Test Chamber Blast Doors"; pixel_x = 4; pixel_y = -2; req_access_txt = "55"},/obj/structure/table/reinforced,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 6; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"})
"cVo" = (/obj/machinery/computer/security/telescreen{dir = 1; name = "Test Chamber Monitor"; network = list("Xeno"); pixel_x = 0; pixel_y = 2},/obj/structure/table/reinforced,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"})
"cVp" = (/obj/machinery/disposal/bin,/obj/structure/disposalpipe/trunk{dir = 2},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plasteel{dir = 10; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"})
@@ -7840,7 +7840,7 @@
"cVr" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"})
"cVs" = (/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/glasses/science,/obj/item/clothing/glasses/science,/obj/structure/table,/turf/simulated/floor/plasteel{dir = 2; icon_state = "warning"},/area/toxins/xenobiology{name = "\improper Secure Lab"})
"cVt" = (/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"})
"cVu" = (/obj/machinery/door/airlock/command{icon = 'icons/obj/doors/Doorele.dmi'; name = "Test Chamber Maintenance"; req_access_txt = "47"},/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"})
"cVu" = (/obj/machinery/door/airlock/command{ name = "Test Chamber Maintenance"; req_access_txt = "47"},/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"})
"cVv" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"})
"cVw" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"})
"cVx" = (/obj/machinery/shieldwallgen{req_access = list(55)},/obj/structure/cable/yellow,/turf/simulated/floor/plating,/area/toxins/xenobiology{name = "\improper Secure Lab"})
+4 -4
View File
@@ -5418,7 +5418,7 @@
/area/wizard_station)
"ov" = (
/obj/machinery/door/airlock{
icon = 'icons/obj/doors/Dooruranium.dmi';
icon = 'icons/obj/doors/airlocks/station/uranium.dmi';
name = "Break Room"
},
/turf/simulated/floor/plasteel/cult,
@@ -6011,7 +6011,7 @@
/area/wizard_station)
"qb" = (
/obj/machinery/door/airlock{
icon = 'icons/obj/doors/Dooruranium.dmi';
icon = 'icons/obj/doors/airlocks/station/uranium.dmi';
name = "Corridor A"
},
/turf/simulated/floor/plasteel/cult,
@@ -6132,14 +6132,14 @@
/area/centcom/holding)
"qu" = (
/obj/machinery/door/airlock{
icon = 'icons/obj/doors/Dooruranium.dmi';
icon = 'icons/obj/doors/airlocks/station/uranium.dmi';
name = "Personal Quarters"
},
/turf/simulated/floor/plasteel/cult,
/area/wizard_station)
"qv" = (
/obj/machinery/door/airlock{
icon = 'icons/obj/doors/Dooruranium.dmi';
icon = 'icons/obj/doors/airlocks/station/uranium.dmi';
name = "Engine Room B"
},
/turf/space,
+4 -4
View File
@@ -424,7 +424,7 @@
"ih" = (/turf/indestructible/riveted{tag = "icon-uranium12"; icon_state = "uranium12"},/area/wizard_station)
"ii" = (/turf/indestructible/riveted{tag = "icon-uranium4"; icon_state = "uranium4"},/area/wizard_station)
"ij" = (/turf/indestructible/riveted{tag = "icon-uranium14"; icon_state = "uranium14"},/area/wizard_station)
"ik" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/Dooruranium.dmi'; name = "Break Room"},/turf/simulated/floor/plasteel/cult,/area/wizard_station)
"ik" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/airlocks/station/uranium.dmi'; name = "Break Room"},/turf/simulated/floor/plasteel/cult,/area/wizard_station)
"il" = (/obj/structure/table,/obj/item/stack/sheet/glass{amount = 10},/obj/item/device/multitool,/turf/simulated/floor/plasteel/shuttle/red,/area/shuttle/syndicate)
"im" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; freerange = 1; frequency = 1213; name = "Syndicate Intercom"; pixel_y = -32; subspace_transmission = 1; syndie = 1},/turf/simulated/floor/plasteel/shuttle/red,/area/shuttle/syndicate)
"in" = (/obj/structure/closet/syndicate/personal,/turf/simulated/floor/plasteel/shuttle/red,/area/shuttle/syndicate)
@@ -527,7 +527,7 @@
"kg" = (/obj/structure/urinal{pixel_y = 28},/turf/simulated/floor/plasteel{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership)
"kh" = (/obj/structure/door_assembly{anchored = 1; icon_state = "door_as_uranium1"; name = "Corridor A"},/turf/simulated/floor/plasteel/cult,/area/wizard_station)
"ki" = (/turf/indestructible/riveted{tag = "icon-uranium13"; icon_state = "uranium13"},/area/wizard_station)
"kj" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/Dooruranium.dmi'; name = "Corridor A"},/turf/simulated/floor/plasteel/cult,/area/wizard_station)
"kj" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/airlocks/station/uranium.dmi'; name = "Corridor A"},/turf/simulated/floor/plasteel/cult,/area/wizard_station)
"kk" = (/obj/structure/table,/obj/item/device/aicard,/turf/simulated/floor/plasteel/shuttle/red,/area/shuttle/syndicate)
"kl" = (/obj/structure/stool,/turf/simulated/floor/plasteel/shuttle/red,/area/shuttle/syndicate)
"km" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0},/turf/simulated/wall/shuttle{icon_state = "wall3"},/area/shuttle/syndicate)
@@ -573,7 +573,7 @@
"la" = (/obj/machinery/computer/mech_bay_power_console,/turf/simulated/floor/plating,/area/syndicate_mothership)
"lb" = (/turf/simulated/floor/plasteel{icon_state = "recharge_floor"; name = "mech bay recharge floor"; tag = "icon-recharge_floor"},/area/syndicate_mothership)
"lc" = (/obj/machinery/vending/tool,/turf/simulated/floor/plasteel/black,/area/syndicate_mothership)
"ld" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/Dooruranium.dmi'; name = "Personal Quarters"},/turf/simulated/floor/plasteel/cult,/area/wizard_station)
"ld" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/airlocks/station/uranium.dmi'; name = "Personal Quarters"},/turf/simulated/floor/plasteel/cult,/area/wizard_station)
"le" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; freerange = 1; frequency = 1213; name = "Syndicate Intercom"; pixel_x = -32; subspace_transmission = 1; syndie = 1},/turf/simulated/floor/plasteel/shuttle/red,/area/shuttle/syndicate)
"lf" = (/turf/simulated/floor/plating/snow,/turf/simulated/floor/plasteel/cult{tag = "icon-gravsnow_corner (NORTH)"; icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 1},/area/syndicate_mothership)
"lg" = (/turf/simulated/floor/plating/snow,/obj/structure/flora/bush,/turf/simulated/floor/plasteel/cult{tag = "icon-gravsnow_corner (NORTH)"; icon = 'icons/turf/snow.dmi'; icon_state = "gravsnow_corner"; dir = 1},/area/syndicate_mothership)
@@ -698,7 +698,7 @@
"nw" = (/obj/structure/rack,/obj/item/clothing/head/that,/obj/item/clothing/under/suit_jacket,/obj/item/clothing/tie/waistcoat,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/centcom/holding)
"nx" = (/turf/simulated/floor/bluegrid,/area/tdome/arena)
"ny" = (/obj/machinery/flasher{id = "tdomeflash"; name = "Thunderdome Flash"},/turf/simulated/floor/bluegrid,/area/tdome/arena)
"nz" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/Dooruranium.dmi'; name = "Engine Room B"},/turf/space,/area/wizard_station)
"nz" = (/obj/machinery/door/airlock{icon = 'icons/obj/doors/airlocks/station/uranium.dmi'; name = "Engine Room B"},/turf/space,/area/wizard_station)
"nA" = (/obj/item/toy/beach_ball,/turf/simulated/floor/plating/beach/sand,/area/centcom/holding)
"nB" = (/obj/structure/rack,/obj/item/weapon/storage/crayons,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/centcom/holding)
"nC" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 2},/area/centcom/holding)
+4 -4
View File
@@ -4356,7 +4356,7 @@
/area/wizard_station)
"mR" = (
/obj/machinery/door/airlock{
icon = 'icons/obj/doors/Dooruranium.dmi';
icon = 'icons/obj/doors/airlocks/station/uranium.dmi';
name = "Break Room"
},
/turf/simulated/floor/plasteel/cult,
@@ -5041,7 +5041,7 @@
/area/wizard_station)
"oC" = (
/obj/machinery/door/airlock{
icon = 'icons/obj/doors/Dooruranium.dmi';
icon = 'icons/obj/doors/airlocks/station/uranium.dmi';
name = "Corridor A"
},
/turf/simulated/floor/plasteel/cult,
@@ -5232,7 +5232,7 @@
/area/tdome/tdomeadmin)
"pf" = (
/obj/machinery/door/airlock{
icon = 'icons/obj/doors/Dooruranium.dmi';
icon = 'icons/obj/doors/airlocks/station/uranium.dmi';
name = "Personal Quarters"
},
/turf/simulated/floor/plasteel/cult,
@@ -5463,7 +5463,7 @@
/area/centcom/holding)
"pR" = (
/obj/machinery/door/airlock{
icon = 'icons/obj/doors/Dooruranium.dmi';
icon = 'icons/obj/doors/airlocks/station/uranium.dmi';
name = "Engine Room B"
},
/turf/space,
+1 -1
View File
@@ -44,7 +44,7 @@ Pipelines + Other Objects -> Pipe network
if(pipe_vision_img)
qdel(pipe_vision_img)
..()
return ..()
//this is called just after the air controller sets up turfs
/obj/machinery/atmospherics/proc/atmosinit()
@@ -35,7 +35,7 @@ Acts like a normal vent, but has an input AND output.
/obj/machinery/atmospherics/components/binary/dp_vent_pump/Destroy()
if(radio_controller)
radio_controller.remove_object(src, frequency)
..()
return ..()
/obj/machinery/atmospherics/components/binary/dp_vent_pump/high_volume
name = "large dual-port air vent"
@@ -25,7 +25,7 @@ Passive gate is similar to the regular pump except:
/obj/machinery/atmospherics/components/binary/passive_gate/Destroy()
if(radio_controller)
radio_controller.remove_object(src,frequency)
..()
return ..()
/obj/machinery/atmospherics/components/binary/passive_gate/update_icon_nopipes()
if(!on)
@@ -29,7 +29,7 @@ Thus, the two variables affect pump operation are set in New():
/obj/machinery/atmospherics/components/binary/pump/Destroy()
if(radio_controller)
radio_controller.remove_object(src,frequency)
..()
return ..()
/obj/machinery/atmospherics/components/binary/pump/on
on = 1
@@ -29,7 +29,7 @@ Thus, the two variables affect pump operation are set in New():
/obj/machinery/atmospherics/components/binary/volume_pump/Destroy()
if(radio_controller)
radio_controller.remove_object(src,frequency)
..()
return ..()
/obj/machinery/atmospherics/components/binary/volume_pump/on
on = 1
@@ -90,7 +90,7 @@ Pipenet stuff; housekeeping
N.disconnect(src)
nodes["n[I]"] = null
nullifyPipenet(parents["p[I]"])
..()
return ..()
/obj/machinery/atmospherics/components/atmosinit(var/list/node_connects)
for(var/I = 1; I <= device_type; I++)
@@ -47,7 +47,7 @@ Filter types:
/obj/machinery/atmospherics/components/trinary/filter/Destroy()
if(radio_controller)
radio_controller.remove_object(src,frequency)
..()
return ..()
/obj/machinery/atmospherics/components/trinary/filter/update_icon()
overlays.Cut()
@@ -44,7 +44,7 @@
if(beaker)
beaker.loc = get_step(loc, SOUTH) //Beaker is carefully ejected from the wreckage of the cryotube
beaker = null
..()
return ..()
/obj/machinery/atmospherics/components/unary/cryo_cell/process_atmos()
..()
var/datum/gas_mixture/air_contents = airs[AIR1]
@@ -19,7 +19,7 @@
/obj/machinery/atmospherics/components/unary/outlet_injector/Destroy()
if(radio_controller)
radio_controller.remove_object(src,frequency)
..()
return ..()
/obj/machinery/atmospherics/components/unary/outlet_injector/on
on = 1
@@ -19,7 +19,7 @@
/obj/machinery/atmospherics/components/unary/portables_connector/Destroy()
if(connected_device)
connected_device.disconnect()
..()
return ..()
/obj/machinery/atmospherics/components/unary/portables_connector/attackby(obj/item/weapon/W, mob/user, params)
if(istype(W, /obj/item/weapon/wrench))
@@ -59,7 +59,7 @@
/obj/machinery/atmospherics/components/unary/vent_pump/Destroy()
if(radio_controller)
radio_controller.remove_object(src,frequency)
..()
return ..()
/obj/machinery/atmospherics/components/unary/vent_pump/high_volume
name = "large air vent"
@@ -305,7 +305,7 @@
if(initial_loc)
initial_loc.air_vent_info -= id_tag
initial_loc.air_vent_names -= id_tag
..()
return ..()
/obj/machinery/atmospherics/components/unary/vent_pump/can_crawl_through()
@@ -51,7 +51,7 @@
if(initial_loc)
initial_loc.air_scrub_info -= id_tag
initial_loc.air_scrub_names -= id_tag
..()
return ..()
/obj/machinery/atmospherics/components/unary/vent_scrubber/auto_use_power()
if(!powered(power_channel))
return 0
+1 -1
View File
@@ -18,7 +18,7 @@
P.parent = null
for(var/obj/machinery/atmospherics/components/C in other_atmosmch)
C.nullifyPipenet(src)
..()
return ..()
/datum/pipeline/process()
if(update)
+1 -1
View File
@@ -73,7 +73,7 @@
node3 = null
A.build_network()
releaseAirToTurf()
..()
return ..()
/obj/machinery/atmospherics/pipe/manifold/disconnect(obj/machinery/atmospherics/reference)
if(reference == node1)
+1 -1
View File
@@ -77,7 +77,7 @@
node4 = null
A.build_network()
releaseAirToTurf()
..()
return ..()
/obj/machinery/atmospherics/pipe/manifold4w/disconnect(obj/machinery/atmospherics/reference)
if(reference == node1)
+1 -1
View File
@@ -56,7 +56,7 @@
var/obj/item/pipe_meter/PM = new (T)
meter.transfer_fingerprints_to(PM)
qdel(meter)
..()
return ..()
/obj/machinery/atmospherics/pipe/proc/update_node_icon()
//Used for pipe painting. Overriden in the children.
+1 -1
View File
@@ -77,7 +77,7 @@ The regular pipe you see everywhere, including bent ones.
node2 = null
A.build_network()
releaseAirToTurf()
..()
return ..()
/obj/machinery/atmospherics/pipe/simple/disconnect(obj/machinery/atmospherics/reference)
if(reference == node1)
+191
View File
@@ -0,0 +1,191 @@
//Ok so it's technically a double linked list, bite me.
/datum/linked_list
var/datum/linked_node/head
var/datum/linked_node/tail
var/node_amt = 0
/datum/linked_node
var/value = null
var/datum/linked_list/linked_list = null
var/datum/linked_node/next_node = null
var/datum/linked_node/previous_node = null
/datum/linked_list/proc/IsEmpty()
. = (node_amt <= 0)
//Add a linked_node (or value, creating a linked_node) at position
//the added node BECOMES the position-th element,
//eg: add("Test",5), the 5th node is now "Test", the previous 5th moves up to become the 6th
/datum/linked_list/proc/Add(node, position)
var/datum/linked_node/adding
if(istype(node, /datum/linked_node))
adding = node
else
adding = new()
adding.value = node
if(!adding.linked_list || (adding.linked_list && (adding.linked_list != src)))
node_amt++
adding.linked_list = src
if(position && position < node_amt)
//Replacing head
if(position == 1)
if(head)
head.previous_node = adding
adding.next_node = head
head = adding
//Replacing any middle node
else
var/location = 0
var/datum/linked_node/at
while((location != position) && (location <= node_amt))
if(at)
if(at.next_node)
at = at.next_node
else
break
else
at = head
location++
//Push at up and assume it's place as the position-th element
if(at && at.previous_node)
at.previous_node.next_node = adding
adding.previous_node = at.previous_node
at.previous_node = adding
adding.next_node = at
return
//Replacing tail
if(tail)
tail.next_node = adding
adding.previous_node = tail
if(!tail.previous_node)
head = tail
tail = adding
//Remove a linked_node or the linked_node of a value
//If you specify a value the FIRST ONE is removed
/datum/linked_list/proc/Remove(node)
var/datum/linked_node/removing
if(istype(node,/datum/linked_node))
removing = node
else
//optimise removing head and tail, no point looping for them, especially the tail
if(removing == head)
removing = head
else if(removing == tail)
removing = tail
else
var/location = 1
var/current_value = null
var/datum/linked_node/at = null
while((current_value != node) && (location <= node_amt))
if(at)
if(at.next_node)
at = at.next_node
else
at = head
location++
if(at)
current_value = at.value
if(current_value == node)
removing = at
break
//Adjust pointers of where removing -was- in the chain.
if(removing)
if(removing.previous_node)
if(removing == tail)
tail = removing.previous_node
if(removing.next_node)
if(removing == head)
head = removing.next_node
removing.next_node.previous_node = removing.previous_node
removing.previous_node.next_node = removing.next_node
else
removing.previous_node.next_node = null
else
if(removing.next_node)
if(removing == head)
head = removing.next_node
removing.next_node.previous_node = null
//if this is still true at this point, there's no more nodes to replace them with
if(removing == head)
head = null
if(removing == tail)
tail = null
removing.next_node = null
removing.previous_node = null
if(removing.linked_list == src)
node_amt--
removing.linked_list = null
return removing
return 0
//Removes and deletes a node or value
/datum/linked_list/proc/RemoveDelete(node)
var/datum/linked_node/dead = Remove(node)
if(dead)
qdel(dead)
return 1
return 0
//Empty the linked_list, deleting all nodes
/datum/linked_list/proc/Empty()
var/datum/linked_node/n = head
while(n)
var/next = n.next_node
Remove(n)
qdel(n)
n = next
node_amt = 0
//Some debugging tools
/datum/linked_list/proc/CheckNodeLinks()
var/datum/linked_node/n = head
while(n)
. = "|[n.value]|"
if(n.previous_node)
. = "[n.previous_node.value]<-" + .
if(n.next_node)
. += "->[n.next_node.value]"
n = n.next_node
. += "<BR>"
/datum/linked_list/proc/DrawNodeLinks()
. = "|<-"
var/datum/linked_node/n = head
while(n)
if(n.previous_node)
. += "<-"
. += "[n.value]"
if(n.next_node)
. += "->"
n = n.next_node
. += "->|"
/datum/linked_list/proc/ToList()
. = list()
var/datum/linked_node/n = head
while(n)
. += n
n = n.next_node
+65
View File
@@ -0,0 +1,65 @@
//////////////////////
//PriorityQueue object
//////////////////////
//an ordered list, using the cmp proc to weight the list elements
/PriorityQueue
var/list/L //the actual queue
var/cmp //the weight function used to order the queue
/PriorityQueue/New(compare)
L = new()
cmp = compare
/PriorityQueue/proc/IsEmpty()
return !L.len
//add an element in the list,
//immediatly ordering it to its position using Insertion sort
/PriorityQueue/proc/Enqueue(atom/A)
var/i
L.Add(A)
i = L.len -1
while(i > 0 && call(cmp)(L[i],A) >= 0) //place the element at it's right position using the compare proc
L.Swap(i,i+1) //last inserted element being first in case of ties (optimization)
i--
//removes and returns the first element in the queue
/PriorityQueue/proc/Dequeue()
if(!L.len)
return 0
. = L[1]
Remove(.)
return .
//removes an element
/PriorityQueue/proc/Remove(atom/A)
return L.Remove(A)
//returns a copy of the elements list
/PriorityQueue/proc/List()
var/list/ret = L.Copy()
return ret
//return the position of an element or 0 if not found
/PriorityQueue/proc/Seek(atom/A)
return L.Find(A)
//return the element at the i_th position
/PriorityQueue/proc/Get(i)
if(i > L.len || i < 1)
return 0
return L[i]
//replace the passed element at it's right position using the cmp proc
/PriorityQueue/proc/ReSort(atom/A)
var/i = Seek(A)
if(i == 0)
return
while(i < L.len && call(cmp)(L[i],L[i+1]) > 0)
L.Swap(i,i+1)
i++
while(i > 1 && call(cmp)(L[i],L[i-1]) <= 0) //last inserted element being first in case of ties (optimization)
L.Swap(i,i-1)
i--
+64
View File
@@ -0,0 +1,64 @@
//Both count as failures, and they don't equate to each other
//this lets us do if(Pop()) without having to specifically check for underflow
//same for if(Push()) and overflow
#define STACK_OVERFLOW -1
#define STACK_UNDERFLOW -2
/datum/stack
var/list/stack = list()
var/max_elements = 0
/datum/stack/New(list/elements,max)
..()
if(elements)
stack = elements.Copy()
if(max)
max_elements = max
/datum/stack/proc/Pop()
if(is_empty())
return STACK_UNDERFLOW
. = stack[stack.len]
stack.Cut(stack.len,0)
/datum/stack/proc/Push(element)
if(max_elements && (stack.len+1 > max_elements))
return STACK_OVERFLOW
stack += element
/datum/stack/proc/Top()
if(is_empty())
return STACK_UNDERFLOW
. = stack[stack.len]
/datum/stack/proc/is_empty()
. = (stack.len > 0)
//Rotate entire stack left with the leftmost looping around to the right
/datum/stack/proc/RotateLeft()
if(is_empty())
return 0
. = stack[1]
stack.Cut(1,2)
Push(.)
//Rotate entire stack to the right with the rightmost looping around to the left
/datum/stack/proc/RotateRight()
if(is_empty())
return 0
. = stack[stack.len]
stack.Cut(stack.len,0)
stack.Insert(1,.)
/datum/stack/proc/Copy()
var/datum/stack/S=new()
S.stack = stack.Copy()
S.max_elements = max_elements
return S
/datum/stack/proc/Clear()
stack.Cut()
+2 -2
View File
@@ -76,7 +76,7 @@
// Used to get a properly sanitized input, of max_length
/proc/stripped_input(mob/user, message = "", title = "", default = "", max_length=MAX_MESSAGE_LEN)
var/name = input(user, message, title, default) as text|null
return html_encode(trim(name, max_length)) //trim is "inside" because html_encode can expand single symbols into multiple symbols (such as turning < into &lt;)
return trim(html_encode(name), max_length) //trim is "outside" because html_encode can expand single symbols into multiple symbols (such as turning < into &lt;)
// Used to get a properly sanitized multiline input, of max_length
/proc/stripped_multiline_input(mob/user, message = "", title = "", default = "", max_length=MAX_MESSAGE_LEN)
@@ -411,4 +411,4 @@ var/list/binary = list("0","1")
t = replacetext(t, "\[list\]", "<ul>")
t = replacetext(t, "\[/list\]", "</ul>")
return t
return t
+1
View File
@@ -13,4 +13,5 @@ var/global/list/chemical_reactions_list //list of all /datum/chemical_reactio
var/global/list/chemical_reagents_list //list of all /datum/reagent datums indexed by reagent id. Used by chemistry stuff
var/global/list/surgeries_list = list() //list of all surgeries by name, associated with their path.
var/global/list/table_recipes = list() //list of all table craft recipes
var/global/list/rcd_list = list() //list of Rapid Construction Devices.
var/global/list/apcs_list = list() //list of all Area Power Controller machines, seperate from machines for powernet speeeeeeed.
+1
View File
@@ -30,6 +30,7 @@
/datum/action/Destroy()
if(owner)
Remove(owner)
return ..()
/datum/action/proc/Grant(mob/living/T)
if(owner)
+1 -1
View File
@@ -15,7 +15,7 @@
/obj/screen/Destroy()
master = null
..()
return ..()
/obj/screen/text
+14 -5
View File
@@ -121,10 +121,13 @@ var/datum/subsystem/garbage_collector/SSgarbage
PlaceInPool(A,0)
if (QDEL_HINT_FINDREFERENCE)//qdel will, if TESTING is enabled, display all references to this object, then queue the object for deletion.
#ifdef TESTING
A.find_references(remove_from_queue = FALSE)
#endif
A.to_be_queued = TRUE
A.find_references()
#else
SSgarbage.Queue(A)
#endif
else
testing("WARNING: \ref[A] \[[A.type]] is not returning a qdel hint. It is being placed in the queue.")
SSgarbage.Queue(A)
// Returns 1 if the object has been queued for deletion.
@@ -147,8 +150,9 @@ var/datum/subsystem/garbage_collector/SSgarbage
#ifdef TESTING
/client/var/running_find_references
/datum/var/running_find_references
/datum/var/to_be_queued = FALSE
/datum/verb/find_references(remove_from_queue = TRUE as num)
/datum/verb/find_references()
set category = "Debug"
set name = "Find References"
set background = 1
@@ -166,7 +170,7 @@ var/datum/subsystem/garbage_collector/SSgarbage
running_find_references = null
return
// Remove this object from the list of things to be auto-deleted.
if(remove_from_queue && SSgarbage && ("\ref[src]" in SSgarbage.queue))
if(SSgarbage && ("\ref[src]" in SSgarbage.queue))
SSgarbage.queue -= "\ref[src]"
if(usr && usr.client)
usr.client.running_find_references = type
@@ -192,6 +196,10 @@ var/datum/subsystem/garbage_collector/SSgarbage
usr.client.running_find_references = null
running_find_references = null
if(to_be_queued == TRUE)
to_be_queued = FALSE
SSgarbage.Queue(src)
/client/verb/purge_all_destroyed_objects()
set category = "Debug"
if(SSgarbage)
@@ -210,5 +218,6 @@ var/datum/subsystem/garbage_collector/SSgarbage
qdel(src)
if(!running_find_references)
find_references(remove_from_queue = FALSE)
to_be_queued = TRUE //find_references removes the object from the queue;
find_references() //this ensures the object will be queued again once find_references has completed
#endif
+7 -1
View File
@@ -109,7 +109,7 @@ var/datum/subsystem/shuttle/SSshuttle
user << "The emergency shuttle has been disabled by Centcom."
return
call_reason = html_encode(trim(call_reason))
call_reason = trim(html_encode(call_reason))
if(length(call_reason) < CALL_SHUTTLE_REASON_LENGTH)
user << "You must provide a reason."
@@ -284,6 +284,12 @@ var/datum/subsystem/shuttle/SSshuttle
A:amount = object.amount
slip.info += "<li>[A.name]</li>" //add the item to the manifest (even if it was misplaced)
if(istype(Crate, /obj/structure/closet/critter)) // critter crates do not actually spawn mobs yet and have no contains var, but the manifest still needs to list them
var/obj/structure/closet/critter/CritCrate = Crate
if(CritCrate.content_mob)
var/mob/crittername = CritCrate.content_mob
slip.info += "<li>[initial(crittername.name)]</li>"
if((errors & MANIFEST_ERROR_ITEM))
//secure and large crates cannot lose items
if(findtext("[object.containertype]", "/secure/") || findtext("[object.containertype]","/largecrate/"))
+1
View File
@@ -43,6 +43,7 @@ var/datum/subsystem/timer/SStimer
/datum/timedevent/Destroy()
SStimer.processing -= src
return ..()
/proc/addtimer(thingToCall, procToCall, wait, argList = list())
if (!SStimer) //can't run timers before the mc has been created
+1 -1
View File
@@ -40,7 +40,7 @@ var/list/spells = typesof(/obj/effect/proc_holder/spell) //needed for the badmin
var/selection_type = "view" //can be "range" or "view"
var/spell_level = 0 //if a spell can be taken multiple times, this raises
var/level_max = 4 //The max possible level_max is 4
var/cooldown_min = 0 //This defines what spell quickened four timeshas as a cooldown. Make sure to set this for every spell
var/cooldown_min = 0 //This defines what spell quickened four times has as a cooldown. Make sure to set this for every spell
var/overlay = 0
var/overlay_icon = 'icons/obj/wizard.dmi'
+32
View File
@@ -0,0 +1,32 @@
/obj/effect/proc_holder/spell/bloodcrawl
name = "Blood crawl"
desc = "Use blood to travel."
charge_max = 10
clothes_req = 0
selection_type = "range"
range = 1
cooldown_min = 0
overlay = null
action_icon_state = "bloodcrawl"
var/phased = 0
/obj/effect/proc_holder/spell/bloodcrawl/choose_targets(mob/user = usr)
for(var/obj/effect/decal/cleanable/target in range(range, get_turf(user)))
if(istype(target, /obj/effect/decal/cleanable/blood) || istype(target, /obj/effect/decal/cleanable/trail_holder))
perform(target)
return
revert_cast()
user << "<span class='warning'>You need blood to blood crawl.</span>"
/obj/effect/proc_holder/spell/bloodcrawl/perform(obj/effect/decal/cleanable/target, recharge = 1, mob/living/user = usr)
if(istype(user))
if(phased)
if(user.phasein(target))
phased = 0
else
user.phaseout(target)
phased = 1
start_recharge()
return
revert_cast()
user << "<span class='warning'>You cannot blood crawl.</span>"
+1 -1
View File
@@ -88,7 +88,7 @@
// Eject contents if deleted somehow
for(var/atom/movable/AM in src)
AM.loc = get_turf(src)
..()
return ..()
/obj/effect/dummy/spell_jaunt/relaymove(var/mob/user, direction)
if (!src.canmove || reappearing || !direction) return
+4
View File
@@ -20,5 +20,9 @@
if(istype(door,/obj/machinery/door/airlock))
door:locked = 0
door.open()
for(var/obj/structure/closet/C in T.contents)
spawn(1)
C.locked = 0
C.open()
return
+13 -2
View File
@@ -1,6 +1,7 @@
/obj/effect/proc_holder/spell/targeted/touch/
/obj/effect/proc_holder/spell/targeted/touch
var/hand_path = "/obj/item/weapon/melee/touch_attack"
var/obj/item/weapon/melee/touch_attack/attached_hand = null
var/refund_coeff = 1 //how much of their charge they get back.
invocation_type = "none" //you scream on connecting, not summoning
include_user = 1
range = -1
@@ -8,7 +9,7 @@
/obj/effect/proc_holder/spell/targeted/touch/Click(mob/user = usr)
if(attached_hand)
qdel(attached_hand)
charge_counter = charge_max
charge_counter = round(charge_max * refund_coeff, 1)
attached_hand = null
user << "<span class='notice'>You draw the power out of your hand.</span>"
return 0
@@ -48,6 +49,7 @@
name = "Disintegrate"
desc = "This spell charges your hand with vile energy that can be used to violently explode victims."
hand_path = "/obj/item/weapon/melee/touch_attack/disintegrate"
refund_coeff = 0.66
school = "evocation"
charge_max = 600
@@ -56,6 +58,15 @@
action_icon_state = "gib"
/obj/effect/proc_holder/spell/targeted/touch/disintegrate/cast(list/targets)
for(var/mob/living/carbon/user in targets)
visible_message("<span class='danger'>[user] starts gathering destructive energy...</span>", "<span class='danger'>You start gathering destructive energy...</span>")
playsound(user.loc, 'sound/magic/Ethereal_Exit.ogg', 50, 1)
if(!do_after(user, 15))
return 0
visible_message("<span class='userdanger'>[user] channels a large amount of destructive energy to his hand!</span>", "<span class='danger'>You channel a large amount of destructive energy to his hand!</span>")
..()
/obj/effect/proc_holder/spell/targeted/touch/flesh_to_stone
name = "Flesh to Stone"
desc = "This spell charges your hand with the power to turn victims into inert statues for a long period of time."
+1 -1
View File
@@ -17,7 +17,7 @@
qdel(spell)
linked_spells = null
starting_spells = null
..()
return ..()
/obj/effect/proc_holder/spell/targeted/trigger/cast(list/targets)
playMagSound()
+8 -2
View File
@@ -353,6 +353,12 @@ var/list/uplink_items = list()
cost = 6
excludefrom = list(/datum/game_mode/nuclear)
/datum/uplink_item/stealthy_weapons/edagger
name = "Energy Dagger"
desc = "A dagger made of energy that looks and functions as a pen when off."
item = /obj/item/weapon/pen/edagger
cost = 2
/datum/uplink_item/stealthy_weapons/foampistol
name = "Toy Gun (with Stun Darts)"
desc = "An innocent-looking toy pistol designed to fire foam darts. Comes loaded with riot-grade darts, to incapacitate a target."
@@ -471,7 +477,7 @@ var/list/uplink_items = list()
/datum/uplink_item/stealthy_tools/camera_bug
name = "Camera Bug"
desc = "Enables you to bug cameras to view them remotely. Adding particular items to it alters its functions."
desc = "Enables you to view all cameras on the network and track a target. Bugging cameras allows you to disable them remotely"
item = /obj/item/device/camera_bug
cost = 1
surplus = 90
@@ -520,7 +526,7 @@ var/list/uplink_items = list()
item = /obj/item/weapon/storage/belt/military
cost = 3
excludefrom = list(/datum/game_mode/nuclear)
/datum/uplink_item/device_tools/medkit
name = "Syndicate Combat Medic Kit"
desc = "The syndicate medkit is a suspicious black and red. Included is a combat stimulant injector for rapid healing, a medical hud for quick identification of injured comrades, \
+2 -2
View File
@@ -277,9 +277,9 @@
var/datum/objective/objective = team_objectives[team_number]
var/team_name = team_names[team_number]
if(console.experiment.points >= objective.target_amount)
world << "<span class='greentext'><b>[team_name] team fullfilled its mission!</b></span>"
world << "<span class='greenannounce'>[team_name] team fullfilled its mission!</span>"
else
world << "<span class='greentext'><b>[team_name] team failed its mission.</b></span>"
world << "<span class='boldannounce'>[team_name] team failed its mission.</span>"
..()
return 1
+2 -3
View File
@@ -45,8 +45,7 @@
var/datum/game_mode/blob/blob_mode = src
if(blob_mode.infected_crew.len)
var/text = "<FONT size = 2><B>The blob[(blob_mode.infected_crew.len > 1 ? "s were" : " was")]:</B></FONT>"
for(var/datum/mind/blob in blob_mode.infected_crew)
text += "<br><b>[blob.key]</b> was <b>[blob.name]</b>"
text += printplayer(blob)
world << text
return 1
return 1
+3 -3
View File
@@ -26,7 +26,7 @@
/mob/living/simple_animal/hostile/blob/blobspore
name = "blob"
desc = "Some blob thing."
desc = "A floating, fragile spore."
icon_state = "blobpod"
icon_living = "blobpod"
health = 40
@@ -117,7 +117,7 @@
if(contents)
for(var/mob/M in contents)
M.loc = src.loc
..()
return ..()
/mob/living/simple_animal/hostile/blob/blobspore/update_icons()
@@ -146,7 +146,7 @@
/mob/living/simple_animal/hostile/blob/blobbernaut
name = "blobbernaut"
desc = "Some HUGE blob thing."
desc = "A hulking, mobile chunk of blobmass."
icon_state = "blobbernaut"
icon_living = "blobbernaut"
icon_dead = "blobbernaut_dead"
+6 -1
View File
@@ -2,8 +2,10 @@
name = "blob core"
icon = 'icons/mob/blob.dmi'
icon_state = "blank_blob"
desc = "A huge, pulsating yellow mass."
health = 200
fire_resist = 2
explosion_block = 6
var/overmind_get_delay = 0 // we don't want to constantly try to find an overmind, do it every 30 seconds
var/resource_delay = 0
var/point_rate = 2
@@ -39,11 +41,14 @@
overmind.blob_core = null
overmind = null
SSobj.processing.Remove(src)
..()
return ..()
/obj/effect/blob/core/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume)
return
/obj/effect/blob/core/ex_act(severity, target)
return
/obj/effect/blob/core/update_icon()
if(health <= 0)
qdel(src)
+2 -1
View File
@@ -2,6 +2,7 @@
name = "factory blob"
icon = 'icons/mob/blob.dmi'
icon_state = "blob_factory"
desc = "A thick spire of tendrils."
health = 100
fire_resist = 2
var/list/spores = list()
@@ -17,7 +18,7 @@
if(spore.factory == src)
spore.factory = null
spores = null
..()
return ..()
/obj/effect/blob/factory/PulseAnimation(activate = 0)
if(activate)
+2 -1
View File
@@ -2,6 +2,7 @@
name = "blob node"
icon = 'icons/mob/blob.dmi'
icon_state = "blank_blob"
desc = "A large, pulsating yellow mass."
health = 100
fire_resist = 2
@@ -25,7 +26,7 @@
/obj/effect/blob/node/Destroy()
blob_nodes -= src
SSobj.processing.Remove(src)
..()
return ..()
/obj/effect/blob/node/Life()
pulseLoop(5)
@@ -2,6 +2,7 @@
name = "resource blob"
icon = 'icons/mob/blob.dmi'
icon_state = "blob_resource"
desc = "A thin spire of slightly swaying tendrils."
health = 30
fire_resist = 2
var/resource_delay = 0
+2 -1
View File
@@ -2,8 +2,9 @@
name = "strong blob"
icon = 'icons/mob/blob.dmi'
icon_state = "blob_idle"
desc = "Some blob creature thingy"
desc = "A solid wall of slightly twitching tendrils."
health = 75
explosion_block = 3
fire_resist = 2
@@ -2,6 +2,7 @@
name = "storage blob"
icon = 'icons/mob/blob.dmi'
icon_state = "blob_resource"
desc = "A huge, smooth mass supported by tendrils."
health = 30
fire_resist = 2
+2 -2
View File
@@ -47,7 +47,7 @@
qdel(ghostimage)
ghostimage = null;
updateallghostimages()
..()
return ..()
/mob/camera/blob/Login()
..()
@@ -96,7 +96,7 @@
if (!message)
return
var/message_a = say_quote(message)
var/message_a = say_quote(message, get_spans())
var/rendered = "<font color=\"#EE4000\"><i><span class='game say'>Blob Telepathy, <span class='name'>[name]([blob_reagent_datum.name])</span> <span class='message'>[message_a]</span></span></i></font>"
for (var/mob/M in mob_list)
+3 -2
View File
@@ -3,10 +3,11 @@
name = "blob"
icon = 'icons/mob/blob.dmi'
luminosity = 3
desc = "Some blob creature thingy"
desc = "A thick wall of writhing tendrils."
density = 0
opacity = 0
anchored = 1
explosion_block = 1
var/health = 30
var/health_timestamp = 0
var/brute_resist = 4
@@ -28,7 +29,7 @@
blobs -= src
if(isturf(loc)) //Necessary because Expand() is retarded and spawns a blob and then deletes it
playsound(src.loc, 'sound/effects/splat.ogg', 50, 1)
..()
return ..()
/obj/effect/blob/CanPass(atom/movable/mover, turf/target, height=0)
@@ -454,3 +454,4 @@ var/list/slot2type = list("head" = /obj/item/clothing/head/changeling, "wear_mas
/datum/changelingprofile/Destroy()
qdel(dna)
return ..()
@@ -389,6 +389,7 @@ var/list/sting_paths
if(ishuman(src) || ismonkey(src))
if(mind && mind.changeling)
digitalcamo = 0
digitalinvis = 0
mind.changeling.changeling_speak = 0
mind.changeling.reset()
for(var/obj/effect/proc_holder/changeling/p in mind.changeling.purchasedpowers)
@@ -1,7 +1,7 @@
/obj/effect/proc_holder/changeling/digitalcamo
name = "Digital Camouflage"
desc = "By evolving the ability to distort our form and proprotions, we defeat common altgorithms used to detect lifeforms on cameras."
helptext = "We cannot be tracked by camera while using this skill. However, humans looking at us will find us... uncanny."
helptext = "We cannot be tracked by camera or seen by AI units while using this skill. However, humans looking at us will find us... uncanny."
dna_cost = 1
//Prevents AIs tracking you but makes you easily detectable to the human-eye.
@@ -9,9 +9,12 @@
if(user.digitalcamo)
user << "<span class='notice'>We return to normal.</span>"
user.digitalinvis = 0
else
user << "<span class='notice'>We distort our form to prevent AI-tracking.</span>"
user.digitalcamo = !user.digitalcamo
user << "<span class='notice'>We distort our form to hide from the AI</span>"
user.digitalcamo = 1
user.digitalinvis = !user.digitalcamo
feedback_add_details("changeling_powers","CAM")
return 1
+9 -9
View File
@@ -313,11 +313,11 @@
if(!check_cult_victory())
feedback_set_details("round_end_result","win - cult win")
feedback_set("round_end_result",acolytes_survived)
world << "<span class='danger'><FONT size = 3>The cult wins! It has succeeded in serving its dark masters!</FONT></span>"
world << "<span class='redtext'>The cult wins! It has succeeded in serving its dark masters!</span>"
else
feedback_set_details("round_end_result","loss - staff stopped the cult")
feedback_set("round_end_result",acolytes_survived)
world << "<span class='danger'><FONT size = 3>The staff managed to stop the cult!</FONT></span>"
world << "<span class='redtext'>The staff managed to stop the cult!</span>"
var/text = ""
@@ -328,28 +328,28 @@
switch(cult_objectives[obj_count])
if("survive")
if(!check_survive())
explanation = "Make sure at least [acolytes_needed] acolytes escape on the shuttle. ([acolytes_survived] escaped) <font color='green'><B>Success!</B></font>"
explanation = "Make sure at least [acolytes_needed] acolytes escape on the shuttle. ([acolytes_survived] escaped) <span class='greenannounce'>Success!</span>"
feedback_add_details("cult_objective","cult_survive|SUCCESS|[acolytes_needed]")
else
explanation = "Make sure at least [acolytes_needed] acolytes escape on the shuttle. ([acolytes_survived] escaped) <span class='danger'>Fail.</span>"
explanation = "Make sure at least [acolytes_needed] acolytes escape on the shuttle. ([acolytes_survived] escaped) <span class='boldannounce'>Fail.</span>"
feedback_add_details("cult_objective","cult_survive|FAIL|[acolytes_needed]")
if("sacrifice")
if(sacrifice_target)
if(sacrifice_target in sacrificed)
explanation = "Sacrifice [sacrifice_target.name], the [sacrifice_target.assigned_role]. <font color='green'><B>Success!</B></font>"
explanation = "Sacrifice [sacrifice_target.name], the [sacrifice_target.assigned_role]. <span class='greenannounce'>Success!</span>"
feedback_add_details("cult_objective","cult_sacrifice|SUCCESS")
else if(sacrifice_target && sacrifice_target.current)
explanation = "Sacrifice [sacrifice_target.name], the [sacrifice_target.assigned_role]. <span class='danger'>Fail.</span>"
explanation = "Sacrifice [sacrifice_target.name], the [sacrifice_target.assigned_role]. <span class='boldannounce'>Fail.</span>"
feedback_add_details("cult_objective","cult_sacrifice|FAIL")
else
explanation = "Sacrifice [sacrifice_target.name], the [sacrifice_target.assigned_role]. <span class='danger'>Fail (Gibbed).</span>"
explanation = "Sacrifice [sacrifice_target.name], the [sacrifice_target.assigned_role]. <span class='boldannounce'>Fail (Gibbed).</span>"
feedback_add_details("cult_objective","cult_sacrifice|FAIL|GIBBED")
if("eldergod")
if(!eldergod)
explanation = "Summon Nar-Sie. <font color='green'><B>Success!</B></font>"
explanation = "Summon Nar-Sie. <span class='greenannounce'>Success!</span>"
feedback_add_details("cult_objective","cult_narsie|SUCCESS")
else
explanation = "Summon Nar-Sie. <span class='danger'>Fail.</span>"
explanation = "Summon Nar-Sie. <span class='boldannounce'>Fail.</span>"
feedback_add_details("cult_objective","cult_narsie|FAIL")
text += "<br><B>Objective #[obj_count]</B>: [explanation]"
+8 -6
View File
@@ -471,17 +471,19 @@
if(M.client && M.client.holder)
M << msg
/datum/game_mode/proc/printplayer(datum/mind/ply)
/datum/game_mode/proc/printplayer(datum/mind/ply, fleecheck)
var/text = "<br><b>[ply.key]</b> was <b>[ply.name]</b> the <b>[ply.assigned_role]</b> and"
if(ply.current)
if(ply.current.stat == DEAD)
text += " <font color='red'><b>died</b></font>"
text += " <span class='boldannounce'>died</span>"
else
text += " <font color='green'><b>survived</b></font>"
text += " <span class='greenannounce'>survived</span>"
if(fleecheck && ply.current.z > ZLEVEL_STATION)
text += " while <span class='boldannounce'>fleeing the station</span>"
if(ply.current.real_name != ply.name)
text += " as <b>[ply.current.real_name]</b>"
else
text += " <font color='red'><b>had their body destroyed</b></font>"
text += " <span class='boldannounce'>had their body destroyed</span>"
return text
/datum/game_mode/proc/printobjectives(datum/mind/ply)
@@ -489,9 +491,9 @@
var/count = 1
for(var/datum/objective/objective in ply.objectives)
if(objective.check_completion())
text += "<br><b>Objective #[count]</b>: [objective.explanation_text] <font color='green'><b>Success!</b></font>"
text += "<br><b>Objective #[count]</b>: [objective.explanation_text] <span class='greenannounce'>Success!</span>"
else
text += "<br><b>Objective #[count]</b>: [objective.explanation_text] <span class='danger'>Fail.</span>"
text += "<br><b>Objective #[count]</b>: [objective.explanation_text] <span class='boldannounce'>Fail.</span>"
count++
return text
+1 -1
View File
@@ -109,7 +109,7 @@
/obj/machinery/dominator/Destroy()
if(operating != -1)
set_broken()
..()
return ..()
/obj/machinery/dominator/emp_act(severity)
healthcheck(100)
+19 -31
View File
@@ -106,6 +106,7 @@ var/list/gang_colors_pool = list("red","orange","yellow","green","blue","purple"
var/obj/item/device/gangtool/gangtool = new(mob)
var/obj/item/weapon/pen/gang/T = new(mob)
var/obj/item/toy/crayon/spraycan/gang/SC = new(mob,gang)
var/obj/item/clothing/glasses/hud/security/chameleon/C = new(mob,gang)
var/list/slots = list (
"backpack" = slot_in_backpack,
@@ -139,8 +140,14 @@ var/list/gang_colors_pool = list("red","orange","yellow","green","blue","purple"
. += 1
else
mob << "The <b>territory spraycan</b> in your [where3] can be used to claim areas of the station for your gang. The more territory your gang controls, the more influence you get. All gangsters can use these, so distribute them to grow your influence faster."
mob.update_icons()
var/where4 = mob.equip_in_one_of_slots(C, slots)
if (!where4)
mob << "Your Syndicate benefactors were unfortunately unable to get you a chameleon security HUD."
. += 1
else
mob << "The <b>chameleon security HUD</b> in your [where4] will help you keep track of who is loyalty-implanted, and unable to be recruited."
mob.update_icons()
return .
@@ -241,39 +248,20 @@ var/list/gang_colors_pool = list("red","orange","yellow","green","blue","purple"
/datum/game_mode/proc/auto_declare_completion_gang(datum/gang/winner)
if(gangs.len)
if(!winner)
world << "<FONT size=3 color=red><B>The station was [station_was_nuked ? "destroyed!" : "evacuated before a gang could claim it! The station wins!"]</B></FONT><br>"
world << "<span class='redtext'>The station was [station_was_nuked ? "destroyed!" : "evacuated before a gang could claim it! The station wins!"]</span><br>"
else
world << "<FONT size=3 color=red><B>The [winner.name] Gang successfully performed a hostile takeover of the station!</B></FONT><br>"
world << "<span class='redtext'>The [winner.name] Gang successfully performed a hostile takeover of the station!</span><br>"
for(var/datum/gang/G in gangs)
world << "<br><b>The [G.name] Gang was [winner==G ? "<font color=green>victorious</font>" : "<font color=red>defeated</font>"] with [round((G.territory.len/start_state.num_territories)*100, 1)]% control of the station!</b>"
world << "<br>The [G.name] Gang Bosses were:"
gang_membership_report(G.bosses)
world << "<br>The [G.name] Gangsters were:"
gang_membership_report(G.gangsters)
world << "<br>"
/datum/game_mode/proc/gang_membership_report(list/membership)
var/text = ""
for(var/datum/mind/gang_mind in membership)
text += "<br><b>[gang_mind.key]</b> was <b>[gang_mind.name]</b> ("
if(gang_mind.current)
if(gang_mind.current.stat == DEAD || isbrain(gang_mind.current))
text += "died"
else if(gang_mind.current.z > ZLEVEL_STATION)
text += "fled the station"
else
text += "survived"
if(gang_mind.current.real_name != gang_mind.name)
text += " as <b>[gang_mind.current.real_name]</b>"
else
text += "body destroyed"
text += ")"
world << text
var/text = "<b>The [G.name] Gang was [winner==G ? "<span class='greenannounce'>victorious</span>" : "<span class='boldannounce'>defeated</span>"] with [round((G.territory.len/start_state.num_territories)*100, 1)]% control of the station!</b>"
text += "<br>The [G.name] Gang Bosses were:"
for(var/datum/mind/boss in G.bosses)
text += printplayer(boss, 1)
text += "<br>The [G.name] Gangsters were:"
for(var/datum/mind/gangster in G.gangsters)
text += printplayer(gangster, 1)
text += "<br>"
world << text
//////////////////////////////////////////////////////////
//Handles influence, territories, and the victory checks//
+20 -15
View File
@@ -120,30 +120,35 @@
minor_announce("Automatic system reboot complete. Have a secure day.","Network reset:")
/datum/AI_Module/large/disable_rcd
module_name = "RCD Disable"
/datum/AI_Module/large/destroy_rcd
module_name = "Destroy RCDs"
mod_pick_name = "rcd"
description = "Send a specialised pulse to break all RCD devices on the station."
cost = 50
description = "Send a specialised pulse to detonate all hand-held and exosuit Rapid Cconstruction Devices on the station."
cost = 25
one_time = 1
power_type = /mob/living/silicon/ai/proc/disable_rcd
/mob/living/silicon/ai/proc/disable_rcd()
set category = "Malfunction"
set name = "Disable RCDs"
set name = "Destroy RCDs"
set desc = "Detonate all RCDs on the station, while sparing onboard cyborg RCDs."
if(!canUseTopic())
if(!canUseTopic() || malf_cooldown)
return
for(var/datum/AI_Module/large/disable_rcd/rcdmod in current_modules)
if(rcdmod.uses > 0)
rcdmod.uses --
for(var/obj/item/weapon/rcd/rcd in world)
rcd.disabled = 1
for(var/obj/item/mecha_parts/mecha_equipment/rcd/rcd in world)
rcd.disabled = 1
src << "<span class='warning>RCD-disabling pulse emitted.</span>"
else src << "<span class='notice'>Out of uses.</span>"
for(var/obj/item/RCD in rcd_list)
if(!istype(RCD, /obj/item/weapon/rcd/borg)) //Ensures that cyborg RCDs are spared.
RCD.audible_message("<span class='danger'><b>[RCD] begins to vibrate and buzz loudly!</b></span>","<span class='danger'><b>[RCD] begins vibrating violently!</b></span>")
spawn(50) //5 seconds to get rid of it!
if(RCD) //Make sure it still exists (In case of chain-reaction)
explosion(RCD, 0, 0, 3, 1, flame_range = 1)
qdel(RCD)
src << "<span class='warning'>RCD detonation pulse emitted.</span>"
malf_cooldown = 1
spawn(100)
malf_cooldown = 0
/datum/AI_Module/large/mecha_domination
module_name = "Viral Mech Domination"
+1 -13
View File
@@ -286,24 +286,12 @@
if( malf_ai.len || istype(ticker.mode,/datum/game_mode/malfunction) )
var/text = "<br><FONT size=3><B>The malfunctioning AIs were:</B></FONT>"
var/module_text_temp = "<br><b>Purchased modules:</b><br>" //Added at the end
for(var/datum/mind/malf in malf_ai)
text += "<br><b>[malf.key]</b> was <b>[malf.name]</b> ("
text += printplayer(malf, 1)
if(malf.current)
if(malf.current.stat == DEAD)
text += "deactivated"
else
text += "operational"
if(malf.current.real_name != malf.name)
text += " as <b>[malf.current.real_name]</b>"
var/mob/living/silicon/ai/AI = malf.current
for(var/datum/AI_Module/mod in AI.current_modules)
module_text_temp += mod.module_name + "<br>"
else
text += "hardware destroyed"
text += ")"
text += module_text_temp
world << text
return 1
+1 -1
View File
@@ -121,7 +121,7 @@
/obj/effect/meteor/Destroy()
walk(src,0) //this cancels the walk_towards() proc
..()
return ..()
/obj/effect/meteor/New()
..()
+1 -19
View File
@@ -278,36 +278,18 @@
/datum/game_mode/proc/auto_declare_completion_nuclear()
if( syndicates.len || (ticker && istype(ticker.mode,/datum/game_mode/nuclear)) )
var/text = "<br><FONT size=3><B>The syndicate operatives were:</B></FONT>"
var/purchases = ""
var/TC_uses = 0
for(var/datum/mind/syndicate in syndicates)
text += "<br><b>[syndicate.key]</b> was <b>[syndicate.name]</b> ("
if(syndicate.current)
if(syndicate.current.stat == DEAD)
text += "died"
else
text += "survived"
if(syndicate.current.real_name != syndicate.name)
text += " as <b>[syndicate.current.real_name]</b>"
else
text += "body destroyed"
text += ")"
text += printplayer(syndicate)
for(var/obj/item/device/uplink/H in world_uplinks)
if(H && H.uplink_owner && H.uplink_owner==syndicate.key)
TC_uses += H.used_TC
purchases += H.purchase_log
text += "<br>"
text += "(Syndicates used [TC_uses] TC) [purchases]"
if(TC_uses==0 && station_was_nuked && !are_operatives_dead())
text += "<BIG><IMG CLASS=icon SRC=\ref['icons/BadAss.dmi'] ICONSTATE='badass'></BIG>"
world << text
return 1
+1 -1
View File
@@ -14,7 +14,7 @@
/obj/item/weapon/pinpointer/Destroy()
active = 0
..()
return ..()
/obj/item/weapon/pinpointer/attack_self()
if(!active)
+13 -57
View File
@@ -128,6 +128,7 @@
var/obj/item/device/flash/T = new(mob)
var/obj/item/toy/crayon/spraycan/R = new(mob)
var/obj/item/clothing/glasses/hud/security/chameleon/C = new(mob)
var/list/slots = list (
"backpack" = slot_in_backpack,
@@ -137,10 +138,16 @@
"right hand" = slot_r_hand,
)
var/where = mob.equip_in_one_of_slots(T, slots)
var/where2 = mob.equip_in_one_of_slots(C, slots)
mob.equip_in_one_of_slots(R,slots)
mob.update_icons()
if (!where2)
mob << "The Syndicate were unfortunately unable to get you a chameleon security HUD."
else
mob << "The chameleon security HUD in your [where2] will help you keep track of who is loyalty-implanted, and unable to be recruited."
if (!where)
mob << "The Syndicate were unfortunately unable to get you a flash."
else
@@ -314,16 +321,15 @@
/datum/game_mode/revolution/declare_completion()
if(finished == 1)
feedback_set_details("round_end_result","win - heads killed")
world << "<span class='danger'><FONT size = 3>The heads of staff were killed or exiled! The revolutionaries win!</FONT></span>"
world << "<span class='redtext'>The heads of staff were killed or exiled! The revolutionaries win!</span>"
else if(finished == 2)
feedback_set_details("round_end_result","loss - rev heads killed")
world << "<span class='danger'><FONT size = 3>The heads of staff managed to stop the revolution!</FONT></span>"
world << "<span class='redtext'>The heads of staff managed to stop the revolution!</span>"
..()
return 1
/datum/game_mode/proc/auto_declare_completion_revolution()
var/list/targets = list()
if(head_revolutionaries.len || istype(ticker.mode,/datum/game_mode/revolution))
var/num_revs = 0
var/num_survivors = 0
@@ -333,78 +339,28 @@
if(survivor.mind)
if((survivor.mind in head_revolutionaries) || (survivor.mind in revolutionaries))
num_revs++
if(num_survivors)
world << "[TAB]Command's Approval Rating: <B>[100 - round((num_revs/num_survivors)*100, 0.1)]%</B>" // % of loyal crew
var/text = "<br><font size=3><b>The head revolutionaries were:</b></font>"
for(var/datum/mind/headrev in head_revolutionaries)
text += "<br><b>[headrev.key]</b> was <b>[headrev.name]</b> ("
if(headrev.current)
if(headrev.current.stat == DEAD)
text += "died"
else if(headrev.current.z > ZLEVEL_STATION)
text += "fled the station"
else
text += "survived the revolution"
if(headrev.current.real_name != headrev.name)
text += " as <b>[headrev.current.real_name]</b>"
else
text += "body destroyed"
text += ")"
for(var/datum/objective/mutiny/objective in headrev.objectives)
targets |= objective.target
text += printplayer(headrev, 1)
text += "<br>"
world << text
if(revolutionaries.len || istype(ticker.mode,/datum/game_mode/revolution))
var/text = "<br><font size=3><b>The revolutionaries were:</b></font>"
for(var/datum/mind/rev in revolutionaries)
text += "<br><b>[rev.key]</b> was <b>[rev.name]</b> ("
if(rev.current)
if(rev.current.stat == DEAD || isbrain(rev.current))
text += "died"
else if(rev.current.z > ZLEVEL_STATION)
text += "fled the station"
else
text += "survived the revolution"
if(rev.current.real_name != rev.name)
text += " as <b>[rev.current.real_name]</b>"
else
text += "body destroyed"
text += ")"
text += printplayer(rev, 1)
text += "<br>"
world << text
if( head_revolutionaries.len || revolutionaries.len || istype(ticker.mode,/datum/game_mode/revolution) )
var/text = "<br><font size=3><b>The heads of staff were:</b></font>"
var/list/heads = get_all_heads()
for(var/datum/mind/head in heads)
var/target = (head in targets)
if(target)
text += "<font color='red'>"
text += "<br><b>[head.key]</b> was <b>[head.name]</b> ("
if(head.current)
if(head.current.stat == DEAD || isbrain(head.current))
text += "died"
else if(head.current.z > ZLEVEL_STATION)
text += "fled the station"
else
text += "survived the revolution"
if(head.current.real_name != head.name)
text += " as <b>[head.current.real_name]</b>"
else
text += "body destroyed"
text += ")"
if(target)
text += "</font>"
text += "<span class='boldannounce'>Target</span>"
text += printplayer(head, 1)
text += "<br>"
world << text
+34 -11
View File
@@ -1,6 +1,7 @@
#define LIGHT_DAM_THRESHOLD 4
#define LIGHT_HEAL_THRESHOLD 2
#define LIGHT_DAMAGE_TAKEN 7
/*
SHADOWLING: A gamemode based on previously-run events
@@ -14,7 +15,7 @@ The game will end under two conditions:
Shadowling strengths:
- The dark
- Hard vacuum (They are not affected by it)
- Hard vacuum (They are not affected by it, but are affected by starlight!)
- Their thralls who are not harmed by the light
- Stealth
@@ -22,8 +23,7 @@ Shadowling weaknesses:
- The light
- Fire
- Enemy numbers
- Lasers (Lasers are concentrated light and do more damage)
- Flashbangs (High stun and high burn damage; if the light stuns humans, you bet your ass it'll hurt the shadowling very much!)
- Burn-based weapons and items (flashbangs, lasers, etc.)
Shadowlings start off disguised as normal crew members, and they only have two abilities: Hatch and Enthrall.
They can still enthrall and perhaps complete their objectives in this form.
@@ -76,7 +76,7 @@ Made by Xhuis
/datum/game_mode/shadowling/announce()
world << "<b>The current game mode is - Shadowling!</b>"
world << "<b>There are alien <span class='deadsay'>shadowlings</span> on the station. Crew: Kill the shadowlings before they can eat or enthrall the crew. Shadowlings: Enthrall the crew while remaining in hiding.</b>"
world << "<b>There are alien <span class='shadowling'>shadowlings</span> on the station. Crew: Kill the shadowlings before they can enthrall the crew. Shadowlings: Enthrall the crew while remaining in hiding.</b>"
/datum/game_mode/shadowling/pre_setup()
if(config.protect_roles_from_antagonist)
@@ -104,7 +104,7 @@ Made by Xhuis
log_game("[shadow.key] (ckey) has been selected as a Shadowling.")
sleep(10)
shadow.current << "<br>"
shadow.current << "<span class='deadsay'><b><font size=3>You are a shadowling!</font></b></span>"
shadow.current << "<span class='shadowling'><b><font size=3>You are a shadowling!</font></b></span>"
greet_shadow(shadow)
finalize_shadowling(shadow)
process_shadow_objectives(shadow)
@@ -113,7 +113,7 @@ Made by Xhuis
return
/datum/game_mode/proc/greet_shadow(datum/mind/shadow)
shadow.current << "<b>Currently, you are disguised as an employee aboard [world.name].</b>"
shadow.current << "<b>Currently, you are disguised as an employee aboard [station_name()]].</b>"
shadow.current << "<b>In your limited state, you have three abilities: Enthrall, Hatch, and Hivemind Commune.</b>"
shadow.current << "<b>Any other shadowlings are you allies. You must assist them as they shall assist you.</b>"
shadow.current << "<b>If you are new to shadowling, or want to read about abilities, check the wiki page at https://tgstation13.org/wiki/Shadowling</b><br>"
@@ -195,13 +195,13 @@ Made by Xhuis
/datum/game_mode/shadowling/declare_completion()
if(check_shadow_victory() && SSshuttle.emergency.mode >= SHUTTLE_ESCAPE) //Doesn't end instantly - this is hacky and I don't know of a better way ~X
world << "<span class='greentext'><b>The shadowlings have ascended and taken over the station!</b></span>"
world << "<span class='greentext'>The shadowlings have ascended and taken over the station!</span>"
else if(shadowling_dead && !check_shadow_victory()) //If the shadowlings have ascended, they can not lose the round
world << "<span class='redtext'><b>The shadowlings have been killed by the crew!</b></span>"
world << "<span class='redtext'>The shadowlings have been killed by the crew!</span>"
else if(!check_shadow_victory() && SSshuttle.emergency.mode >= SHUTTLE_ESCAPE)
world << "<span class='redtext'><b>The crew escaped the station before the shadowlings could ascend!</b></span>"
world << "<span class='redtext'>The crew escaped the station before the shadowlings could ascend!</span>"
else
world << "<span class='redtext'><b>The shadowlings have failed!</b></span>"
world << "<span class='redtext'>The shadowlings have failed!</span>"
..()
return 1
@@ -232,7 +232,7 @@ Made by Xhuis
id = "shadowling"
say_mod = "chitters"
specflags = list(NOBREATH,NOBLOOD,RADIMMUNE,NOGUNS) //Can't use guns due to muzzle flash
burnmod = 1.5 //1.5x burn damage, 2x is excessive
burnmod = 1.5 //1.5x burn damage, 2x is excessive
heatmod = 1.5
/datum/species/shadow/ling/spec_life(mob/living/carbon/human/H)
@@ -254,6 +254,29 @@ Made by Xhuis
H.SetWeakened(0)
H.SetStunned(0)
/datum/species/shadow/ling/lesser //Empowered thralls. Obvious, but powerful
name = "Lesser Shadowling"
id = "l_shadowling"
say_mod = "chitters"
specflags = list(NOBREATH,NOBLOOD,RADIMMUNE)
burnmod = 1.1
heatmod = 1.1
/datum/species/shadow/ling/lesser/spec_life(mob/living/carbon/human/H)
if(!H.weakeyes) H.weakeyes = 1
var/light_amount = 0
H.nutrition = NUTRITION_LEVEL_WELL_FED //i aint never get hongry
if(isturf(H.loc))
var/turf/T = H.loc
light_amount = T.get_lumcount()
if(light_amount > LIGHT_DAM_THRESHOLD && !H.incorporeal_move)
H.take_overall_damage(0, LIGHT_DAMAGE_TAKEN/2)
else if (light_amount < LIGHT_HEAL_THRESHOLD)
H.heal_overall_damage(2,2)
H.adjustToxLoss(-5)
H.adjustBrainLoss(-25)
H.adjustCloneLoss(-1)
/datum/game_mode/proc/update_shadow_icons_added(datum/mind/shadow_mind)
var/datum/atom_hud/antag/shadow_hud = huds[ANTAG_HUD_SHADOW]
shadow_hud.join_hud(shadow_mind.current)
@@ -1,6 +1,9 @@
#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.dna.species.id == "shadowling" && is_shadow(H)) return 1
if(H.dna.species.id == "l_shadowling" && is_thrall(H)) return 1
if(!is_shadow_or_thrall(usr)) usr << "<span class='warning'>You can't wrap your head around how to do this.</span>"
else if(is_thrall(usr)) usr << "<span class='warning'>You aren't powerful enough to do this.</span>"
else if(is_shadow(usr)) usr << "<span class='warning'>Your telepathic ability is suppressed. Hatch or regenerate first.</span>"
@@ -171,7 +174,7 @@
/obj/effect/proc_holder/spell/targeted/enthrall/cast(list/targets)
var/mob/living/carbon/human/user = usr
listclearnulls(ticker.mode.thralls)
if(!shadowling_check(usr)) return
if(!(usr.mind in ticker.mode.shadows)) return
if(user.dna.species.id != "shadowling")
if(ticker.mode.thralls.len >= 5)
user << "<span class='warning'>With your telepathic abilities suppressed, your human form will not allow you to enthrall any others. Hatch first.</span>"
@@ -229,7 +232,7 @@
for(var/obj/item/weapon/implant/loyalty/L in target)
if(L && L.implanted)
qdel(L)
target << "<span class='boldannounce'>Your unwavering loyalty to Nanotrasen unexpectedly falters, dims, dies. You feel a sense of liberation which is quickly stifled by terror.</span>"
target << "<span class='boldannounce'>Your unwavering loyalty to Nanotrasen unexpectedly falters, dims, dies.</span>"
if(3)
usr << "<span class='notice'>You begin rearranging [target]'s memories.</span>"
usr.visible_message("<span class='danger'>[usr]'s eyes flare brightly.</span>")
@@ -511,46 +514,96 @@ datum/reagent/shadowling_blindness_smoke //Reagent used for above spell
/obj/effect/proc_holder/spell/targeted/revive_thrall //Completely revives a dead thrall
name = "Black Recuperation"
desc = "Brings a dead thrall back to life."
desc = "Revives or empowers a thrall."
panel = "Shadowling Abilities"
range = 1
charge_max = 3000
charge_max = 600
clothes_req = 0
include_user = 0
action_icon_state = "revive_thrall"
var/list/thralls_in_world = list()
/obj/effect/proc_holder/spell/targeted/revive_thrall/cast(list/targets)
if(!shadowling_check(usr))
charge_counter = charge_max
return
for(var/mob/living/carbon/human/thrallToRevive in targets)
if(!is_thrall(thrallToRevive))
usr << "<span class='warning'>[thrallToRevive] is not a thrall.</span>"
charge_counter = charge_max
return
if(thrallToRevive.stat != DEAD)
usr << "<span class='warning'>[thrallToRevive] is not dead.</span>"
charge_counter = charge_max
return
usr.visible_message("<span class='danger'>[usr] kneels over [thrallToRevive], placing their hands on \his chest.</span>", \
"<span class='shadowling'>You crouch over the body of your thrall and begin gathering energy...</span>")
thrallToRevive.notify_ghost_cloning("Your masters are resuscitating you! Re-enter your corpse if you wish to be brought to life.")
if(!do_mob(usr, thrallToRevive, 30))
usr << "<span class='warning'>Your concentration snaps. The flow of energy ebbs.</span>"
charge_counter= charge_max
return
usr << "<span class='shadowling'><b><i>You release a massive surge of power into [thrallToRevive]!</b></i></span>"
usr.visible_message("<span class='boldannounce'><i>Red lightning surges from [usr]'s hands into [thrallToRevive]'s chest!</i></span>")
playsound(thrallToRevive, 'sound/weapons/Egloves.ogg', 50, 1)
playsound(thrallToRevive, 'sound/machines/defib_zap.ogg', 50, 1)
sleep(10)
thrallToRevive.revive()
thrallToRevive.visible_message("<span class='boldannounce'>[thrallToRevive] draws in a huge breath, blinding violet light shining from their eyes.</span>", \
"<span class='shadowling'><b><i>You have returned. One of your masters has brought you from the darkness beyond.</b></i></span>")
thrallToRevive.Weaken(4)
thrallToRevive.emote("gasp")
playsound(thrallToRevive, "bodyfall", 50, 1)
var/choice = alert(usr,"Empower a living thrall or revive a dead one?",,"Empower","Revive","Cancel")
switch(choice)
if("Empower")
if(!is_thrall(thrallToRevive))
usr << "<span class='warning'>[thrallToRevive] is not a thrall.</span>"
charge_counter = charge_max
return
if(thrallToRevive.stat != CONSCIOUS)
usr << "<span class='warning'>[thrallToRevive] must be conscious to become empowered.</span>"
charge_counter = charge_max
return
var/empowered_thralls = 0
for(var/datum/mind/M in ticker.mode.thralls)
if(!ishuman(M.current))
return
var/mob/living/carbon/human/H = M.current
if(H.dna.species.id == "l_shadowling")
empowered_thralls++
if(empowered_thralls >= EMPOWERED_THRALL_LIMIT)
usr << "<span class='warning'>You cannot spare this much energy. There are too many empowered thralls.</span>"
charge_counter = charge_max
return
usr.visible_message("<span class='danger'>[usr] places their hands over [thrallToRevive]'s face, red light shining from beneath.</span>", \
"<span class='shadowling'>You place your hands on [thrallToRevive]'s face and begin gathering energy...</span>")
thrallToRevive << "<span class='userdanger'>[usr] places their hands over your face. You feel energy gathering. Stand still...</span>"
if(!do_mob(usr, thrallToRevive, 80))
usr << "<span class='warning'>Your concentration snaps. The flow of energy ebbs.</span>"
charge_counter = charge_max
return
usr << "<span class='shadowling'><b><i>You release a massive surge of power into [thrallToRevive]!</b></i></span>"
usr.visible_message("<span class='boldannounce'><i>Red lightning surges into [thrallToRevive]'s face!</i></span>")
playsound(thrallToRevive, 'sound/weapons/Egloves.ogg', 50, 1)
playsound(thrallToRevive, 'sound/machines/defib_zap.ogg', 50, 1)
usr.Beam(thrallToRevive,icon_state="red_lightning",icon='icons/effects/effects.dmi',time=1)
thrallToRevive.Weaken(5)
thrallToRevive.visible_message("<span class='warning'><b>[thrallToRevive] collapses, their skin and face distorting!</span>", \
"<span class='userdanger'><i>AAAAAAAAAAAAAAAAAAAGH-</i></span>")
sleep(20)
thrallToRevive.visible_message("<span class='warning'>[thrallToRevive] slowly rises, no longer recognizable as human.</span>", \
"<span class='shadowling'><b>You feel new power flow into you. You have been gifted by your masters. You now closely resemble them. You are empowered in \
darkness but wither slowly in light. In addition, Lesser Glare and Guise have been upgraded into their true forms.</b></span>")
hardset_dna(thrallToRevive, null, null, null, null, /datum/species/shadow/ling/lesser)
thrallToRevive.mind.remove_spell(/obj/effect/proc_holder/spell/targeted/lesser_glare)
thrallToRevive.mind.remove_spell(/obj/effect/proc_holder/spell/targeted/lesser_shadow_walk)
thrallToRevive.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/glare(null))
thrallToRevive.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/shadow_walk(null))
if("Revive")
if(!is_thrall(thrallToRevive))
usr << "<span class='warning'>[thrallToRevive] is not a thrall.</span>"
charge_counter = charge_max
return
if(thrallToRevive.stat != DEAD)
usr << "<span class='warning'>[thrallToRevive] is not dead.</span>"
charge_counter = charge_max
return
usr.visible_message("<span class='danger'>[usr] kneels over [thrallToRevive], placing their hands on \his chest.</span>", \
"<span class='shadowling'>You crouch over the body of your thrall and begin gathering energy...</span>")
thrallToRevive.notify_ghost_cloning("Your masters are resuscitating you! Re-enter your corpse if you wish to be brought to life.")
if(!do_mob(usr, thrallToRevive, 30))
usr << "<span class='warning'>Your concentration snaps. The flow of energy ebbs.</span>"
charge_counter = charge_max
return
usr << "<span class='shadowling'><b><i>You release a massive surge of power into [thrallToRevive]!</b></i></span>"
usr.visible_message("<span class='boldannounce'><i>Red lightning surges from [usr]'s hands into [thrallToRevive]'s chest!</i></span>")
playsound(thrallToRevive, 'sound/weapons/Egloves.ogg', 50, 1)
playsound(thrallToRevive, 'sound/machines/defib_zap.ogg', 50, 1)
usr.Beam(thrallToRevive,icon_state="red_lightning",icon='icons/effects/effects.dmi',time=1)
sleep(10)
thrallToRevive.revive()
thrallToRevive.visible_message("<span class='boldannounce'>[thrallToRevive] heaves in breath, dim red light shining in their eyes.</span>", \
"<span class='shadowling'><b><i>You have returned. One of your masters has brought you from the darkness beyond.</b></i></span>")
thrallToRevive.Weaken(4)
thrallToRevive.emote("gasp")
playsound(thrallToRevive, "bodyfall", 50, 1)
else
charge_counter = charge_max
return
// THRALL ABILITIES BEYOND THIS POINT //
@@ -599,15 +652,8 @@ datum/reagent/shadowling_blindness_smoke //Reagent used for above spell
/obj/effect/proc_holder/spell/targeted/lesser_shadow_walk/cast(list/targets)
for(var/mob/living/user in targets)
var/lumcount = 0
var/turf/T = user.loc
lumcount = T.get_lumcount()
if(lumcount > LIGHT_DAM_THRESHOLD)
user << "<span class='warning'>It's too bright to do that!</span>"
charge_counter = charge_max
return
user.visible_message("<span class='warning'>[user] suddenly fades away!</span>", "<span class='shadowling'>You veil yourself in darkness, making you harder to see.</span>")
user.alpha = 20
user.alpha = 10
sleep(40)
user.visible_message("<span class='warning'>[user] appears from nowhere!</span>", "<span class='shadowling'>Your shadowy guise slips away.</span>")
user.alpha = initial(user.alpha)
@@ -621,7 +667,7 @@ datum/reagent/shadowling_blindness_smoke //Reagent used for above spell
range = -1
include_user = 1
clothes_req = 0
action_icon_state = "collective_mind"
action_icon_state = "darksight"
var/active = 0
/obj/effect/proc_holder/spell/targeted/thrall_vision/cast(list/targets)
@@ -831,7 +877,7 @@ datum/reagent/shadowling_blindness_smoke //Reagent used for above spell
/obj/effect/proc_holder/spell/targeted/ascendant_transmit/cast(list/targets)
for(var/mob/living/user in targets)
var/text = stripped_input(user, "What do you want to say to everything on and near [world.name]?.", "Transmit to World", "")
var/text = stripped_input(user, "What do you want to say to everything on and near [station_name()]?.", "Transmit to World", "")
if(!text)
return
world << "<font size=4><span class='shadowling'><b>\"[text]\"</font></span>"
@@ -77,11 +77,33 @@
item_state = null
origin_tech = null
vision_flags = SEE_MOBS
darkness_view = 3
darkness_view = 1
invis_view = 2
flash_protect = -1
unacidable = 1
flags = ABSTRACT | NODROP
action_button_name = "Shift Nerves"
action_button_is_hands_free = 1
var/max_darkness_view = 8
var/min_darkness_view = 0
/obj/item/clothing/glasses/night/shadowling/attack_self(mob/user)
if(!ishuman(user))
return
var/mob/living/carbon/human/H = user
if(H.dna.species.id != "shadowling")
user << "<span class='warning'>You aren't sure how to do this...</span>"
return
var/new_dark_view
new_dark_view = (input(user, "Enter the radius of tiles to see with night vision.", "Night Vision", "[new_dark_view]") as num)
new_dark_view = Clamp(new_dark_view,min_darkness_view,max_darkness_view)
switch(new_dark_view)
if(0)
user << "<span class='notice'>Your night vision capabilities fade away for the time being.</span>"
else
user << "<span class='notice'>You shift your night vision capabilities to see [new_dark_view] tiles away.</span>"
darkness_view = new_dark_view
return
/obj/structure/shadow_vortex
+1 -1
View File
@@ -108,7 +108,7 @@
var/is_hijacker = prob(10)
var/martyr_chance = prob(20)
var/objective_count = is_hijacker //Hijacking counts towards number of objectives
if(!exchange_blue && traitors.len >= 5) //Set up an exchange if there are enough traitors
if(!exchange_blue && traitors.len >= 8) //Set up an exchange if there are enough traitors
if(!exchange_red)
exchange_red = traitor
else
+12 -9
View File
@@ -204,7 +204,7 @@ var/global/list/multiverse = list()
/obj/item/weapon/multisword/Destroy()
multiverse.Remove(src)
..()
return ..()
/obj/item/weapon/multisword/attack_self(mob/user)
if(user.mind.special_role == "apprentice")
@@ -505,9 +505,19 @@ var/global/list/multiverse = list()
return src.loc == user
/obj/item/voodoo/attack_self(mob/user)
if(!target)
if(!target && possible.len)
target = input(user, "Select your victim!", "Voodoo") as null|anything in possible
return
if(user.zone_sel.selecting == "chest")
if(link)
target = null
link.loc = get_turf(src)
user << "<span class='notice'>You remove the [link] from the doll.</span>"
link = null
update_targets()
return
if(target && cooldown < world.time)
switch(user.zone_sel.selecting)
if("mouth")
@@ -542,13 +552,6 @@ var/global/list/multiverse = list()
target.Dizzy(10)
target << "<span class='warning'>You suddenly feel as if your head was hit with a hammer!</span>"
GiveHint(target,user)
if("chest")
if(link)
target = null
link.loc = get_turf(src)
user << "<span class='notice'>You remove the [link] from the doll.</span>"
link = null
update_targets()
cooldown = world.time + cooldown_time
/obj/item/voodoo/proc/update_targets()
+1 -1
View File
@@ -36,9 +36,9 @@
/datum/game_mode/wizard/post_setup()
for(var/datum/mind/wizard in wizards)
log_game("[wizard.key] (ckey) has been selected as a Wizard")
forge_wizard_objectives(wizard)
//learn_basic_spells(wizard.current)
equip_wizard(wizard.current)
forge_wizard_objectives(wizard)
name_wizard(wizard.current)
greet_wizard(wizard)
if(use_huds)
+1 -1
View File
@@ -24,7 +24,7 @@
if(Beacon)
qdel(Beacon)
Beacon = null
..()
return ..()
// update the invisibility and icon
/obj/machinery/bluespace_beacon/hide(intact)
+2 -2
View File
@@ -95,7 +95,7 @@
/obj/machinery/door/airlock/Destroy()
if(frequency && radio_controller)
radio_controller.remove_object(src,frequency)
..()
return ..()
/obj/machinery/airlock_sensor
icon = 'icons/obj/airlock_machines.dmi'
@@ -168,4 +168,4 @@
/obj/machinery/airlock_sensor/Destroy()
if(radio_controller)
radio_controller.remove_object(src,frequency)
..()
return ..()
+1 -1
View File
@@ -65,7 +65,7 @@ var/list/announcement_systems = list()
/obj/machinery/announcement_system/Destroy()
announcement_systems -= src //"OH GOD WHY ARE THERE 100,000 LISTED ANNOUNCEMENT SYSTEMS?!!"
..()
return ..()
/obj/machinery/announcement_system/power_change()
..()
+2 -2
View File
@@ -81,7 +81,7 @@
SSair.atmos_machinery -= src
if(radio_controller)
radio_controller.remove_object(src,frequency)
..()
return ..()
/////////////////////////////////////////////////////////////
// GENERAL AIR CONTROL (a.k.a atmos computer)
@@ -180,7 +180,7 @@
/obj/machinery/computer/general_air_control/Destroy()
if(radio_controller)
radio_controller.remove_object(src, frequency)
..()
return ..()
/obj/machinery/computer/general_air_control/proc/set_frequency(new_frequency)
radio_controller.remove_object(src, frequency)
+1 -1
View File
@@ -21,7 +21,7 @@
/obj/machinery/meter/Destroy()
SSair.atmos_machinery -= src
src.target = null
..()
return ..()
/obj/machinery/meter/initialize()
if (!target)
@@ -30,7 +30,7 @@
/obj/machinery/portable_atmospherics/Destroy()
qdel(air_contents)
SSair.atmos_machinery -= src
..()
return ..()
/obj/machinery/portable_atmospherics/update_icon()
return null
+1 -1
View File
@@ -15,7 +15,7 @@
/obj/machinery/zvent/Destroy()
SSair.atmos_machinery -= src
..()
return ..()
/obj/machinery/zvent/process_atmos()
+1 -1
View File
@@ -113,7 +113,7 @@
/obj/machinery/bot/Destroy()
qdel(Radio)
qdel(botcard)
..()
return ..()
/obj/machinery/bot/proc/explode()
+2 -2
View File
@@ -8,7 +8,7 @@
throwforce = 5.0
throw_speed = 2
throw_range = 5
w_class = 3.0
w_class = 3.
var/created_name = "Cleanbot"
@@ -151,7 +151,7 @@ text("<A href='?src=\ref[src];power=1'>[on ? "On" : "Off"]</A>"))
PoolOrNew(/obj/effect/effect/foam, loc)
else if (prob(5))
visible_message("[src] makes an excited beeping booping sound!")
audible_message("[src] makes an excited beeping booping sound!")
if(!target) //Search for cleanables it can see.
target = scan(/obj/effect/decal/cleanable/)
+2 -2
View File
@@ -216,7 +216,7 @@
nag()
if(prob(5))
visible_message("[src] makes an excited booping beeping sound!")
audible_message("[src] makes an excited booping beeping sound!")
//Normal scanning procedure. We have tiles loaded, are not emagged.
if(!target && emagged < 2 && amount > 0)
@@ -289,7 +289,7 @@
F.break_tile_to_plating()
else
F.ReplaceWithLattice()
visible_message("<span class='danger'>[src] makes an excited booping sound.</span>")
audible_message("<span class='danger'>[src] makes an excited booping sound.</span>")
spawn(50)
amount ++
anchored = 0
+4 -4
View File
@@ -426,13 +426,13 @@ obj/machinery/bot/mulebot/CanPass(atom/movable/mover, turf/target, height=1.5)
/obj/machinery/bot/mulebot/proc/buzz(type)
switch(type)
if(SIGH)
visible_message("[src] makes a sighing buzz.", "<span class='italics'>You hear an electronic buzzing sound.</span>")
audible_message("[src] makes a sighing buzz.", "<span class='italics'>You hear an electronic buzzing sound.</span>")
playsound(loc, 'sound/machines/buzz-sigh.ogg', 50, 0)
if(ANNOYED)
visible_message("[src] makes an annoyed buzzing sound.", "<span class='italics'>You hear an electronic buzzing sound.</span>")
audible_message("[src] makes an annoyed buzzing sound.", "<span class='italics'>You hear an electronic buzzing sound.</span>")
playsound(loc, 'sound/machines/buzz-two.ogg', 50, 0)
if(DELIGHT)
visible_message("[src] makes a delighted ping!", "<span class='italics'>You hear a ping.</span>")
audible_message("[src] makes a delighted ping!", "<span class='italics'>You hear a ping.</span>")
playsound(loc, 'sound/machines/ping.ogg', 50, 0)
@@ -725,7 +725,7 @@ obj/machinery/bot/mulebot/CanPass(atom/movable/mover, turf/target, height=1.5)
/obj/machinery/bot/mulebot/proc/at_target()
if(!reached_target)
radio_frequency = SUPP_FREQ //Supply channel
visible_message("[src] makes a chiming sound!", "<span class='italics'>You hear a chime.</span>")
audible_message("[src] makes a chiming sound!", "<span class='italics'>You hear a chime.</span>")
playsound(loc, 'sound/machines/chime.ogg', 50, 0)
reached_target = 1
+1 -1
View File
@@ -56,7 +56,7 @@
bug.current = null
bug = null
cameranet.removeCamera(src) //Will handle removal from the camera network and the chunks, so we don't need to worry about that
..()
return ..()
/obj/machinery/camera/emp_act(severity)
if(!isEmpProof())
@@ -135,7 +135,7 @@
//This could all be done better, but it works for now.
/obj/machinery/computer/HolodeckControl/Destroy()
emergencyShutdown()
..()
return ..()
/obj/machinery/computer/HolodeckControl/emp_act(severity)
+1
View File
@@ -35,6 +35,7 @@
/obj/item/toy/griffin = 2,
/obj/item/weapon/coin/antagtoken = 2,
/obj/item/stack/tile/fakespace/loaded = 2,
/obj/item/toy/toy_xeno = 2,
)
/obj/machinery/computer/arcade/New()
+1 -1
View File
@@ -20,7 +20,7 @@
/obj/machinery/computer/atmos_alert/Destroy()
if(radio_controller)
radio_controller.remove_object(src, receive_frequency)
..()
return ..()
/obj/machinery/computer/atmos_alert/receive_signal(datum/signal/signal)
if(!signal || signal.encryption) return
@@ -610,5 +610,5 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12
/obj/machinery/computer/communications/Destroy()
shuttle_caller_list -= src
SSshuttle.autoEvac()
..()
return ..()
+1 -1
View File
@@ -126,7 +126,7 @@
if(T)
if(istype(T, /turf/simulated/floor))
T.blocks_air = 0
..()
return ..()
/obj/machinery/computer/supplycomp
name = "supply shuttle console"
+209 -362
View File
@@ -17,11 +17,18 @@
// Wires for the airlock are located in the datum folder, inside the wires datum folder.
#define AIRLOCK_CLOSED 1
#define AIRLOCK_CLOSING 2
#define AIRLOCK_OPEN 3
#define AIRLOCK_OPENING 4
#define AIRLOCK_DENY 5
#define AIRLOCK_EMAG 6
var/list/airlock_overlays = list()
/obj/machinery/door/airlock
name = "airlock"
icon = 'icons/obj/doors/Doorint.dmi'
icon_state = "door_closed"
icon = 'icons/obj/doors/airlocks/station/public.dmi'
icon_state = "closed"
var/aiControlDisabled = 0 //If 1, AI control is disabled until the AI hacks back in and disables the lock. If 2, the AI has bypassed the lock. If -1, the control is enabled but the AI had bypassed it earlier, so if it is disabled again the AI would have no trouble getting back in.
var/hackProof = 0 // if 1, this door can't be hacked by the AI
@@ -48,253 +55,23 @@
var/obj/item/device/doorCharge/charge = null //If applied, causes an explosion upon opening the door
var/detonated = 0
var/airlock_material = null //material of inner filling; if its an airlock with glass, this should be set to "glass"
var/overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
explosion_block = 1
/obj/machinery/door/airlock/command
icon = 'icons/obj/doors/Doorcom.dmi'
doortype = /obj/structure/door_assembly/door_assembly_com
/obj/machinery/door/airlock/security
icon = 'icons/obj/doors/Doorsec.dmi'
doortype = /obj/structure/door_assembly/door_assembly_sec
/obj/machinery/door/airlock/engineering
icon = 'icons/obj/doors/Dooreng.dmi'
doortype = /obj/structure/door_assembly/door_assembly_eng
/obj/machinery/door/airlock/medical
icon = 'icons/obj/doors/Doormed.dmi'
doortype = /obj/structure/door_assembly/door_assembly_med
/obj/machinery/door/airlock/maintenance
name = "maintenance access"
icon = 'icons/obj/doors/Doormaint.dmi'
doortype = /obj/structure/door_assembly/door_assembly_mai
/obj/machinery/door/airlock/external
name = "external airlock"
icon = 'icons/obj/doors/Doorext.dmi'
doortype = /obj/structure/door_assembly/door_assembly_ext
/obj/machinery/door/airlock/glass
name = "glass airlock"
icon = 'icons/obj/doors/Doorglass.dmi'
opacity = 0
doortype = /obj/structure/door_assembly/door_assembly_glass
glass = 1
/obj/machinery/door/airlock/centcom
icon = 'icons/obj/doors/Doorele.dmi'
opacity = 1
doortype = /obj/structure/door_assembly/door_assembly_centcom
/obj/machinery/door/airlock/vault
name = "vault door"
icon = 'icons/obj/doors/vault.dmi'
opacity = 1
doortype = /obj/structure/door_assembly/door_assembly_vault
explosion_block = 2
/obj/machinery/door/airlock/glass_large
name = "glass airlock"
icon = 'icons/obj/doors/Door2x1glassfull.dmi'
opacity = 0
doortype = null //(double glass door) there's no door assembly sprites for this one.
glass = 1
bound_width = 64 // 2x1
/obj/machinery/door/airlock/freezer
name = "freezer airlock"
icon = 'icons/obj/doors/Doorfreezer.dmi'
opacity = 1
doortype = /obj/structure/door_assembly/door_assembly_fre
/obj/machinery/door/airlock/hatch
name = "airtight hatch"
icon = 'icons/obj/doors/Doorhatchele.dmi'
opacity = 1
doortype = /obj/structure/door_assembly/door_assembly_hatch
/obj/machinery/door/airlock/maintenance_hatch
name = "maintenance hatch"
icon = 'icons/obj/doors/Doorhatchmaint2.dmi'
opacity = 1
doortype = /obj/structure/door_assembly/door_assembly_mhatch
/obj/machinery/door/airlock/glass_command
name = "maintenance hatch"
icon = 'icons/obj/doors/Doorcomglass.dmi'
opacity = 0
doortype = /obj/structure/door_assembly/door_assembly_com/glass
glass = 1
/obj/machinery/door/airlock/glass_engineering
name = "maintenance hatch"
icon = 'icons/obj/doors/Doorengglass.dmi'
opacity = 0
doortype = /obj/structure/door_assembly/door_assembly_eng/glass
glass = 1
/obj/machinery/door/airlock/glass_security
name = "maintenance hatch"
icon = 'icons/obj/doors/Doorsecglass.dmi'
opacity = 0
doortype = /obj/structure/door_assembly/door_assembly_sec/glass
glass = 1
/obj/machinery/door/airlock/glass_medical
name = "maintenance hatch"
icon = 'icons/obj/doors/Doormedglass.dmi'
opacity = 0
doortype = /obj/structure/door_assembly/door_assembly_med/glass
glass = 1
/obj/machinery/door/airlock/mining
name = "mining airlock"
icon = 'icons/obj/doors/Doormining.dmi'
doortype = /obj/structure/door_assembly/door_assembly_min
/obj/machinery/door/airlock/atmos
name = "atmospherics airlock"
icon = 'icons/obj/doors/Dooratmo.dmi'
doortype = /obj/structure/door_assembly/door_assembly_atmo
/obj/machinery/door/airlock/research
icon = 'icons/obj/doors/Doorresearch.dmi'
doortype = /obj/structure/door_assembly/door_assembly_research
/obj/machinery/door/airlock/glass_research
name = "maintenance hatch"
icon = 'icons/obj/doors/Doorresearchglass.dmi'
opacity = 0
doortype = /obj/structure/door_assembly/door_assembly_research/glass
glass = 1
/obj/machinery/door/airlock/glass_mining
name = "maintenance hatch"
icon = 'icons/obj/doors/Doorminingglass.dmi'
opacity = 0
doortype = /obj/structure/door_assembly/door_assembly_min/glass
glass = 1
/obj/machinery/door/airlock/glass_atmos
name = "maintenance hatch"
icon = 'icons/obj/doors/Dooratmoglass.dmi'
opacity = 0
doortype = /obj/structure/door_assembly/door_assembly_atmo/glass
glass = 1
/obj/machinery/door/airlock/gold
name = "gold airlock"
icon = 'icons/obj/doors/Doorgold.dmi'
var/mineral = "gold"
doortype = /obj/structure/door_assembly/door_assembly_gold
/obj/machinery/door/airlock/silver
name = "silver airlock"
icon = 'icons/obj/doors/Doorsilver.dmi'
var/mineral = "silver"
doortype = /obj/structure/door_assembly/door_assembly_silver
/obj/machinery/door/airlock/diamond
name = "diamond airlock"
icon = 'icons/obj/doors/Doordiamond.dmi'
var/mineral = "diamond"
doortype = /obj/structure/door_assembly/door_assembly_diamond
/obj/machinery/door/airlock/uranium
name = "uranium airlock"
desc = "And they said I was crazy."
icon = 'icons/obj/doors/Dooruranium.dmi'
var/mineral = "uranium"
doortype = /obj/structure/door_assembly/door_assembly_uranium
var/last_event = 0
/obj/machinery/door/airlock/uranium/process()
if(world.time > last_event+20)
if(prob(50))
radiate()
last_event = world.time
/obj/machinery/door/airlock/New()
..()
/obj/machinery/door/airlock/uranium/proc/radiate()
for(var/mob/living/L in range (3,src))
L.irradiate(15)
return
/obj/machinery/door/airlock/plasma
name = "plasma airlock"
desc = "No way this can end badly."
icon = 'icons/obj/doors/Doorplasma.dmi'
var/mineral = "plasma"
doortype = /obj/structure/door_assembly/door_assembly_plasma
/obj/machinery/door/airlock/plasma/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(exposed_temperature > 300)
PlasmaBurn(exposed_temperature)
/obj/machinery/door/airlock/plasma/proc/ignite(exposed_temperature)
if(exposed_temperature > 300)
PlasmaBurn(exposed_temperature)
/obj/machinery/door/airlock/plasma/proc/PlasmaBurn(temperature)
atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 500)
new/obj/structure/door_assembly/door_assembly_0( src.loc )
qdel(src)
/obj/machinery/door/airlock/plasma/BlockSuperconductivity() //we don't stop the heat~
return 0
/obj/machinery/door/airlock/clown
name = "bananium airlock"
desc = "Honkhonkhonk"
icon = 'icons/obj/doors/Doorbananium.dmi'
var/mineral = "bananium"
doortype = /obj/structure/door_assembly/door_assembly_clown
/obj/machinery/door/airlock/sandstone
name = "sandstone airlock"
icon = 'icons/obj/doors/Doorsand.dmi'
var/mineral = "sandstone"
doortype = /obj/structure/door_assembly/door_assembly_sandstone
/obj/machinery/door/airlock/science
icon = 'icons/obj/doors/Doorsci.dmi'
doortype = /obj/structure/door_assembly/door_assembly_science
/obj/machinery/door/airlock/glass_science
name = "glass airlock"
icon = 'icons/obj/doors/Doorsciglass.dmi'
opacity = 0
doortype = /obj/structure/door_assembly/door_assembly_science/glass
glass = 1
/obj/machinery/door/airlock/highsecurity
name = "high tech security airlock"
icon = 'icons/obj/doors/hightechsecurity.dmi'
doortype = /obj/structure/door_assembly/door_assembly_highsecurity
explosion_block = 2
/obj/machinery/door/airlock/shuttle
name = "shuttle airlock"
icon = 'icons/obj/doors/doorshuttle.dmi'
doortype = /obj/structure/door_assembly/door_assembly_shuttle
/obj/machinery/door/airlock/wood
name = "wooden airlock"
icon = 'icons/obj/doors/Doorwood.dmi'
var/mineral = "wood"
doortype = /obj/structure/door_assembly/door_assembly_wood
/obj/machinery/door/airlock/virology
icon = 'icons/obj/doors/Doorviro.dmi'
doortype = /obj/structure/door_assembly/door_assembly_viro
/obj/machinery/door/airlock/glass_virology
icon = 'icons/obj/doors/Doorviroglass.dmi'
opacity = 0
doortype = /obj/structure/door_assembly/door_assembly_viro/glass
glass = 1
wires = new(src)
if(src.closeOtherId != null)
spawn (5)
for (var/obj/machinery/door/airlock/A in airlocks)
if(A.closeOtherId == src.closeOtherId && A != src)
src.closeOther = A
break
if(glass)
airlock_material = "glass"
update_icon()
/*
About the new airlock wires panel:
@@ -439,47 +216,108 @@ About the new airlock wires panel:
else
return 0
/obj/machinery/door/airlock/update_icon(state=0)
switch(state)
if(0)
if(density)
state = AIRLOCK_CLOSED
else
state = AIRLOCK_OPEN
icon_state = ""
if(AIRLOCK_OPEN, AIRLOCK_CLOSED)
icon_state = ""
if(AIRLOCK_DENY, AIRLOCK_OPENING, AIRLOCK_CLOSING, AIRLOCK_EMAG)
icon_state = "nonexistenticonstate" //MADNESS
set_airlock_overlays(state)
/obj/machinery/door/airlock/update_icon()
if(overlays) overlays.Cut()
if(density)
if(locked && lights)
icon_state = "door_locked"
else
icon_state = "door_closed"
if(p_open || welded || emergency)
overlays = list()
/obj/machinery/door/airlock/proc/set_airlock_overlays(state)
var/image/frame_overlay
var/image/filling_overlay
var/image/lights_overlay
var/image/panel_overlay
var/image/weld_overlay
var/image/sparks_overlay
switch(state)
if(AIRLOCK_CLOSED)
frame_overlay = get_airlock_overlay("closed", icon)
if(airlock_material)
filling_overlay = get_airlock_overlay("[airlock_material]_closed", overlays_file)
else
filling_overlay = get_airlock_overlay("fill_closed", icon)
if(p_open)
overlays += image(icon, "panel_open")
panel_overlay = get_airlock_overlay("panel_closed", overlays_file)
if(welded)
overlays += image(icon, "welded")
if(emergency && !locked)
overlays += image(icon, "elights")
else
icon_state = "door_open"
weld_overlay = get_airlock_overlay("welded", overlays_file)
if(lights)
if(locked)
lights_overlay = get_airlock_overlay("lights_bolts", overlays_file)
else if(emergency)
lights_overlay = get_airlock_overlay("lights_emergency", overlays_file)
if(AIRLOCK_DENY)
overlays += get_airlock_overlay("lights_denied", overlays_file)
sleep(4)
update_icon(AIRLOCK_CLOSED)
return
if(AIRLOCK_EMAG)
overlays += get_airlock_overlay("sparks", overlays_file)
return
return
if(AIRLOCK_CLOSING)
frame_overlay = get_airlock_overlay("closing", icon)
if(airlock_material)
filling_overlay = get_airlock_overlay("[airlock_material]_closing", overlays_file)
else
filling_overlay = get_airlock_overlay("fill_closing", icon)
if(lights)
lights_overlay = get_airlock_overlay("lights_closing", overlays_file)
if(p_open)
panel_overlay = get_airlock_overlay("panel_closing", overlays_file)
if(AIRLOCK_OPEN)
frame_overlay = get_airlock_overlay("open", icon)
if(airlock_material)
filling_overlay = get_airlock_overlay("[airlock_material]_open", overlays_file)
else
filling_overlay = get_airlock_overlay("fill_open", icon)
if(p_open)
panel_overlay = get_airlock_overlay("panel_open", overlays_file)
if(AIRLOCK_OPENING)
frame_overlay = get_airlock_overlay("opening", icon)
if(airlock_material)
filling_overlay = get_airlock_overlay("[airlock_material]_opening", overlays_file)
else
filling_overlay = get_airlock_overlay("fill_opening", icon)
if(lights)
lights_overlay = get_airlock_overlay("lights_opening", overlays_file)
if(p_open)
panel_overlay = get_airlock_overlay("panel_opening", overlays_file)
overlays.Cut()
overlays += frame_overlay
overlays += filling_overlay
overlays += lights_overlay
overlays += panel_overlay
overlays += weld_overlay
overlays += sparks_overlay
/proc/get_airlock_overlay(icon_state, icon_file)
var/iconkey = "[icon_state][icon_file]"
if(airlock_overlays[iconkey])
return airlock_overlays[iconkey]
airlock_overlays[iconkey] = image(icon_file, icon_state)
return airlock_overlays[iconkey]
/obj/machinery/door/airlock/do_animate(animation)
switch(animation)
if("opening")
if(overlays) overlays.Cut()
if(p_open)
spawn(2) // The only work around that works. Downside is that the door will be gone for a millisecond.
flick("o_door_opening", src) //can not use flick due to BYOND bug updating overlays right before flicking
else
flick("door_opening", src)
update_icon(AIRLOCK_OPENING)
if("closing")
if(overlays) overlays.Cut()
if(p_open)
flick("o_door_closing", src)
else
flick("door_closing", src)
if("spark")
flick("door_spark", src)
update_icon(AIRLOCK_CLOSING)
if("deny")
flick("door_deny", src)
return
update_icon(AIRLOCK_DENY)
icon_state = "closed"
/obj/machinery/door/airlock/examine(mob/user)
..()
@@ -917,6 +755,9 @@ About the new airlock wires panel:
if(istype(C, /obj/item/device/detective_scanner))
return
if(istype(C, /obj/item/weapon/card/emag))
return
src.add_fingerprint(user)
if((istype(C, /obj/item/weapon/weldingtool) && !( src.operating ) && src.density))
var/obj/item/weapon/weldingtool/W = C
@@ -1072,7 +913,7 @@ About the new airlock wires panel:
return 0
if(charge && !detonated)
p_open = 1
update_icon()
update_icon(AIRLOCK_OPENING)
visible_message("<span class='warning'>[src]'s panel is blown off in a spray of deadly shrapnel!</span>")
charge.ex_act(1)
detonated = 1
@@ -1097,14 +938,31 @@ About the new airlock wires panel:
else
playsound(src.loc, 'sound/machines/airlockforced.ogg', 30, 1)
if(autoclose && normalspeed)
if(autoclose && normalspeed)
spawn(150)
autoclose()
else if(autoclose && !normalspeed)
spawn(11)
autoclose()
return ..()
if(!density)
return 1
if(!ticker)
return 0
operating = 1
do_animate("opening")
src.SetOpacity(0)
sleep(5)
src.density = 0
sleep(9)
src.layer = 2.7
update_icon()
SetOpacity(0)
operating = 0
air_update_turf(1)
update_freelook_sight()
return 1
/obj/machinery/door/airlock/close(forced=0)
@@ -1140,13 +998,13 @@ About the new airlock wires panel:
if(density)
return 1
operating = 1
do_animate("closing")
update_icon(AIRLOCK_CLOSING)
src.layer = 3.1
sleep(5)
src.density = 1
if(!safe)
crush()
sleep(5)
sleep(9)
update_icon()
if(visible && !glass)
SetOpacity(1)
@@ -1158,17 +1016,6 @@ About the new airlock wires panel:
open()
return 1
/obj/machinery/door/airlock/New()
..()
wires = new(src)
if(src.closeOtherId != null)
spawn (5)
for (var/obj/machinery/door/airlock/A in world)
if(A.closeOtherId == src.closeOtherId && A != src)
src.closeOther = A
break
/obj/machinery/door/airlock/proc/prison_open()
if(emagged) return
src.locked = 0
@@ -1192,75 +1039,63 @@ About the new airlock wires panel:
if(!W.can_use(user))
return
if(glass == 1)
//These airlocks have a glass version.
var optionlist = list("Default", "Engineering", "Atmospherics", "Security", "Command", "Medical", "Research", "Mining")
var paintjob = input(user, "Please select a paintjob for this airlock.") in optionlist
if((!in_range(src, usr) && src.loc != usr) || !W.use(user)) return
switch(paintjob)
if("Default")
icon = 'icons/obj/doors/Doorglass.dmi'
doortype = /obj/structure/door_assembly/door_assembly_glass
if("Engineering")
icon = 'icons/obj/doors/Doorengglass.dmi'
doortype = /obj/structure/door_assembly/door_assembly_eng/glass
if("Atmospherics")
icon = 'icons/obj/doors/Dooratmoglass.dmi'
doortype = /obj/structure/door_assembly/door_assembly_atmo/glass
if("Security")
icon = 'icons/obj/doors/Doorsecglass.dmi'
doortype = /obj/structure/door_assembly/door_assembly_sec/glass
if("Command")
icon = 'icons/obj/doors/Doorcomglass.dmi'
doortype = /obj/structure/door_assembly/door_assembly_com/glass
if("Medical")
icon = 'icons/obj/doors/Doormedglass.dmi'
doortype = /obj/structure/door_assembly/door_assembly_med/glass
if("Research")
icon = 'icons/obj/doors/Doorresearchglass.dmi'
doortype = /obj/structure/door_assembly/door_assembly_research/glass
if("Mining")
icon = 'icons/obj/doors/Doorminingglass.dmi'
doortype = /obj/structure/door_assembly/door_assembly_min/glass
var/list/optionlist
if(airlock_material == "glass")
optionlist = list("Public", "Public2", "Engineering", "Atmospherics", "Security", "Command", "Medical", "Research", "Mining", "Maintenance")
else
//These airlocks have a regular version.
var optionlist = list("Default", "Engineering", "Atmospherics", "Security", "Command", "Medical", "Research", "Mining", "Maintenance", "External", "High Security")
var paintjob = input(user, "Please select a paintjob for this airlock.") in optionlist
if((!in_range(src, usr) && src.loc != usr) || !W.use(user)) return
switch(paintjob)
if("Default")
icon = 'icons/obj/doors/Doorint.dmi'
doortype = /obj/structure/door_assembly/door_assembly_0
if("Engineering")
icon = 'icons/obj/doors/Dooreng.dmi'
doortype = /obj/structure/door_assembly/door_assembly_eng
if("Atmospherics")
icon = 'icons/obj/doors/Dooratmo.dmi'
doortype = /obj/structure/door_assembly/door_assembly_atmo
if("Security")
icon = 'icons/obj/doors/Doorsec.dmi'
doortype = /obj/structure/door_assembly/door_assembly_sec
if("Command")
icon = 'icons/obj/doors/Doorcom.dmi'
doortype = /obj/structure/door_assembly/door_assembly_com
if("Medical")
icon = 'icons/obj/doors/Doormed.dmi'
doortype = /obj/structure/door_assembly/door_assembly_med
if("Research")
icon = 'icons/obj/doors/Doorresearch.dmi'
doortype = /obj/structure/door_assembly/door_assembly_research
if("Mining")
icon = 'icons/obj/doors/Doormining.dmi'
doortype = /obj/structure/door_assembly/door_assembly_min
if("Maintenance")
icon = 'icons/obj/doors/Doormaint.dmi'
doortype = /obj/structure/door_assembly/door_assembly_mai
if("External")
icon = 'icons/obj/doors/Doorext.dmi'
doortype = /obj/structure/door_assembly/door_assembly_ext
if("High Security")
icon = 'icons/obj/doors/hightechsecurity.dmi'
doortype = /obj/structure/door_assembly/door_assembly_highsecurity
optionlist = list("Public", "Engineering", "Atmospherics", "Security", "Command", "Medical", "Research", "Mining", "Maintenance", "External", "High Security")
var/paintjob = input(user, "Please select a paintjob for this airlock.") in optionlist
if((!in_range(src, usr) && src.loc != usr) || !W.use(user)) return
switch(paintjob)
if("Public")
icon = 'icons/obj/doors/airlocks/station/public.dmi'
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
doortype = /obj/structure/door_assembly/door_assembly_0
if("Public2")
icon = 'icons/obj/doors/airlocks/station2/glass.dmi'
overlays_file = 'icons/obj/doors/airlocks/station2/overlays.dmi'
doortype = /obj/structure/door_assembly/door_assembly_glass
if("Engineering")
icon = 'icons/obj/doors/airlocks/station/engineering.dmi'
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
doortype = /obj/structure/door_assembly/door_assembly_eng
if("Atmospherics")
icon = 'icons/obj/doors/airlocks/station/atmos.dmi'
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
doortype = /obj/structure/door_assembly/door_assembly_atmo
if("Security")
icon = 'icons/obj/doors/airlocks/station/security.dmi'
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
doortype = /obj/structure/door_assembly/door_assembly_sec
if("Command")
icon = 'icons/obj/doors/airlocks/station/command.dmi'
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
doortype = /obj/structure/door_assembly/door_assembly_com
if("Medical")
icon = 'icons/obj/doors/airlocks/station/medical.dmi'
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
doortype = /obj/structure/door_assembly/door_assembly_med
if("Research")
icon = 'icons/obj/doors/airlocks/station/research.dmi'
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
doortype = /obj/structure/door_assembly/door_assembly_research
if("Mining")
icon = 'icons/obj/doors/airlocks/station/mining.dmi'
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
doortype = /obj/structure/door_assembly/door_assembly_min
if("Maintenance")
icon = 'icons/obj/doors/airlocks/station/maintenance.dmi'
overlays_file = 'icons/obj/doors/airlocks/station/overlays.dmi'
doortype = /obj/structure/door_assembly/door_assembly_mai
if("External")
icon = 'icons/obj/doors/airlocks/external/external.dmi'
overlays_file = 'icons/obj/doors/airlocks/external/overlays.dmi'
doortype = /obj/structure/door_assembly/door_assembly_ext
if("High Security")
icon = 'icons/obj/doors/airlocks/highsec/highsec.dmi'
overlays_file = 'icons/obj/doors/airlocks/highsec/overlays.dmi'
doortype = /obj/structure/door_assembly/door_assembly_highsecurity
update_icon()
/obj/machinery/door/airlock/CanAStarPass(obj/item/weapon/card/id/ID)
@@ -1270,4 +1105,16 @@ About the new airlock wires panel:
/obj/machinery/door/airlock/HasProximity(atom/movable/AM as mob|obj)
for (var/obj/A in contents)
A.HasProximity(AM)
return
return
/obj/machinery/door/airlock/emag_act(mob/user)
if(density && hasPower() && !emagged)
update_icon(AIRLOCK_EMAG)
sleep(6)
open()
emagged = 1
desc = "<span class='warning'>Its access panel is smoking slightly.</span>"
lights = 0
locked = 1
loseMainPower()
loseBackupPower()
+298
View File
@@ -0,0 +1,298 @@
/*
Station Airlocks Regular
*/
/obj/machinery/door/airlock/command
icon = 'icons/obj/doors/airlocks/station/command.dmi'
doortype = /obj/structure/door_assembly/door_assembly_com
/obj/machinery/door/airlock/security
icon = 'icons/obj/doors/airlocks/station/security.dmi'
doortype = /obj/structure/door_assembly/door_assembly_sec
/obj/machinery/door/airlock/engineering
icon = 'icons/obj/doors/airlocks/station/engineering.dmi'
doortype = /obj/structure/door_assembly/door_assembly_eng
/obj/machinery/door/airlock/medical
icon = 'icons/obj/doors/airlocks/station/medical.dmi'
doortype = /obj/structure/door_assembly/door_assembly_med
/obj/machinery/door/airlock/maintenance
name = "maintenance access"
icon = 'icons/obj/doors/airlocks/station/maintenance.dmi'
doortype = /obj/structure/door_assembly/door_assembly_mai
/obj/machinery/door/airlock/mining
name = "mining airlock"
icon = 'icons/obj/doors/airlocks/station/mining.dmi'
doortype = /obj/structure/door_assembly/door_assembly_min
/obj/machinery/door/airlock/atmos
name = "atmospherics airlock"
icon = 'icons/obj/doors/airlocks/station/atmos.dmi'
doortype = /obj/structure/door_assembly/door_assembly_atmo
/obj/machinery/door/airlock/research
icon = 'icons/obj/doors/airlocks/station/research.dmi'
doortype = /obj/structure/door_assembly/door_assembly_research
/obj/machinery/door/airlock/freezer
name = "freezer airlock"
icon = 'icons/obj/doors/airlocks/station/freezer.dmi'
doortype = /obj/structure/door_assembly/door_assembly_fre
/obj/machinery/door/airlock/science
icon = 'icons/obj/doors/airlocks/station/science.dmi'
doortype = /obj/structure/door_assembly/door_assembly_science
/obj/machinery/door/airlock/virology
icon = 'icons/obj/doors/airlocks/station/virology.dmi'
doortype = /obj/structure/door_assembly/door_assembly_viro
//////////////////////////////////
/*
Station Airlocks Glass
*/
/obj/machinery/door/airlock/glass_command
icon = 'icons/obj/doors/airlocks/station/command.dmi'
opacity = 0
doortype = /obj/structure/door_assembly/door_assembly_com/glass
glass = 1
/obj/machinery/door/airlock/glass_engineering
icon = 'icons/obj/doors/airlocks/station/engineering.dmi'
opacity = 0
doortype = /obj/structure/door_assembly/door_assembly_eng/glass
glass = 1
/obj/machinery/door/airlock/glass_security
icon = 'icons/obj/doors/airlocks/station/security.dmi'
opacity = 0
doortype = /obj/structure/door_assembly/door_assembly_sec/glass
glass = 1
/obj/machinery/door/airlock/glass_medical
icon = 'icons/obj/doors/airlocks/station/medical.dmi'
opacity = 0
doortype = /obj/structure/door_assembly/door_assembly_med/glass
glass = 1
/obj/machinery/door/airlock/glass_research
icon = 'icons/obj/doors/airlocks/station/research.dmi'
opacity = 0
doortype = /obj/structure/door_assembly/door_assembly_research/glass
glass = 1
/obj/machinery/door/airlock/glass_mining
icon = 'icons/obj/doors/airlocks/station/mining.dmi'
opacity = 0
doortype = /obj/structure/door_assembly/door_assembly_min/glass
glass = 1
/obj/machinery/door/airlock/glass_atmos
icon = 'icons/obj/doors/airlocks/station/atmos.dmi'
opacity = 0
doortype = /obj/structure/door_assembly/door_assembly_atmo/glass
glass = 1
/obj/machinery/door/airlock/glass_science
icon = 'icons/obj/doors/airlocks/station/science.dmi'
opacity = 0
doortype = /obj/structure/door_assembly/door_assembly_science/glass
glass = 1
/obj/machinery/door/airlock/glass_virology
icon = 'icons/obj/doors/airlocks/station/virology.dmi'
opacity = 0
doortype = /obj/structure/door_assembly/door_assembly_viro/glass
glass = 1
//////////////////////////////////
/*
Station Airlocks Mineral
*/
/obj/machinery/door/airlock/gold
name = "gold airlock"
icon = 'icons/obj/doors/airlocks/station/gold.dmi'
var/mineral = "gold"
doortype = /obj/structure/door_assembly/door_assembly_gold
/obj/machinery/door/airlock/silver
name = "silver airlock"
icon = 'icons/obj/doors/airlocks/station/silver.dmi'
var/mineral = "silver"
doortype = /obj/structure/door_assembly/door_assembly_silver
/obj/machinery/door/airlock/diamond
name = "diamond airlock"
icon = 'icons/obj/doors/airlocks/station/diamond.dmi'
var/mineral = "diamond"
doortype = /obj/structure/door_assembly/door_assembly_diamond
/obj/machinery/door/airlock/uranium
name = "uranium airlock"
icon = 'icons/obj/doors/airlocks/station/uranium.dmi'
var/mineral = "uranium"
doortype = /obj/structure/door_assembly/door_assembly_uranium
var/last_event = 0
/obj/machinery/door/airlock/uranium/process()
if(world.time > last_event+20)
if(prob(50))
radiate()
last_event = world.time
..()
/obj/machinery/door/airlock/uranium/proc/radiate()
for(var/mob/living/L in range (3,src))
L.irradiate(15)
return
/obj/machinery/door/airlock/plasma
name = "plasma airlock"
desc = "No way this can end badly."
icon = 'icons/obj/doors/airlocks/station/plasma.dmi'
var/mineral = "plasma"
doortype = /obj/structure/door_assembly/door_assembly_plasma
/obj/machinery/door/airlock/plasma/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
if(exposed_temperature > 300)
PlasmaBurn(exposed_temperature)
/obj/machinery/door/airlock/plasma/proc/ignite(exposed_temperature)
if(exposed_temperature > 300)
PlasmaBurn(exposed_temperature)
/obj/machinery/door/airlock/plasma/proc/PlasmaBurn(temperature)
atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 500)
new/obj/structure/door_assembly/door_assembly_0( src.loc )
qdel(src)
/obj/machinery/door/airlock/plasma/BlockSuperconductivity() //we don't stop the heat~
return 0
/obj/machinery/door/airlock/clown
name = "bananium airlock"
desc = "Honkhonkhonk"
icon = 'icons/obj/doors/airlocks/station/bananium.dmi'
var/mineral = "bananium"
doortype = /obj/structure/door_assembly/door_assembly_clown
/obj/machinery/door/airlock/sandstone
name = "sandstone airlock"
icon = 'icons/obj/doors/airlocks/station/sandstone.dmi'
var/mineral = "sandstone"
doortype = /obj/structure/door_assembly/door_assembly_sandstone
/obj/machinery/door/airlock/wood
name = "wooden airlock"
icon = 'icons/obj/doors/airlocks/station/wood.dmi'
var/mineral = "wood"
doortype = /obj/structure/door_assembly/door_assembly_wood
//////////////////////////////////
/*
Station2 Airlocks
*/
/obj/machinery/door/airlock/glass
name = "glass airlock"
icon = 'icons/obj/doors/airlocks/station2/glass.dmi'
overlays_file = 'icons/obj/doors/airlocks/station2/overlays.dmi'
opacity = 0
doortype = /obj/structure/door_assembly/door_assembly_glass
glass = 1
//////////////////////////////////
/*
External Airlocks
*/
/obj/machinery/door/airlock/external
name = "external airlock"
icon = 'icons/obj/doors/airlocks/external/external.dmi'
overlays_file = 'icons/obj/doors/airlocks/external/overlays.dmi'
doortype = /obj/structure/door_assembly/door_assembly_ext
//////////////////////////////////
/*
Centcom Airlocks
*/
/obj/machinery/door/airlock/centcom
icon = 'icons/obj/doors/airlocks/centcom/centcom.dmi'
overlays_file = 'icons/obj/doors/airlocks/centcom/overlays.dmi'
opacity = 1
doortype = /obj/structure/door_assembly/door_assembly_centcom
//////////////////////////////////
/*
Vault Airlocks
*/
/obj/machinery/door/airlock/vault
name = "vault door"
icon = 'icons/obj/doors/airlocks/vault/vault.dmi'
overlays_file = 'icons/obj/doors/airlocks/vault/overlays.dmi'
opacity = 1
doortype = /obj/structure/door_assembly/door_assembly_vault
explosion_block = 2
//////////////////////////////////
/*
Hatch Airlocks
*/
/obj/machinery/door/airlock/hatch
name = "airtight hatch"
icon = 'icons/obj/doors/airlocks/hatch/centcom.dmi'
overlays_file = 'icons/obj/doors/airlocks/hatch/overlays.dmi'
opacity = 1
doortype = /obj/structure/door_assembly/door_assembly_hatch
/obj/machinery/door/airlock/maintenance_hatch
name = "maintenance hatch"
icon = 'icons/obj/doors/airlocks/hatch/maintenance.dmi'
overlays_file = 'icons/obj/doors/airlocks/hatch/overlays.dmi'
opacity = 1
doortype = /obj/structure/door_assembly/door_assembly_mhatch
//////////////////////////////////
/*
High Security Airlocks
*/
/obj/machinery/door/airlock/highsecurity
name = "high tech security airlock"
icon = 'icons/obj/doors/airlocks/highsec/highsec.dmi'
overlays_file = 'icons/obj/doors/airlocks/highsec/overlays.dmi'
doortype = /obj/structure/door_assembly/door_assembly_highsecurity
explosion_block = 2
//////////////////////////////////
/*
Shuttle Airlocks
*/
/obj/machinery/door/airlock/shuttle
name = "shuttle airlock"
icon = 'icons/obj/doors/airlocks/shuttle/shuttle.dmi'
overlays_file = 'icons/obj/doors/airlocks/shuttle/overlays.dmi'
doortype = /obj/structure/door_assembly/door_assembly_shuttle
//////////////////////////////////
/*
Misc Airlocks
*/
/obj/machinery/door/airlock/glass_large
name = "glass airlock"
icon = 'icons/obj/doors/Door2x1glassfull.dmi'
opacity = 0
doortype = null //(double glass door) there's no door assembly sprites for this one.
glass = 1
bound_width = 64 // 2x1
+3 -2
View File
@@ -1,7 +1,8 @@
/obj/machinery/door/airlock/alarmlock
name = "glass alarm airlock"
icon = 'icons/obj/doors/Doorglass.dmi'
icon = 'icons/obj/doors/airlocks/station2/glass.dmi'
overlays_file = 'icons/obj/doors/airlocks/station2/overlays.dmi'
opacity = 0
doortype = /obj/structure/door_assembly/door_assembly_glass
glass = 1
@@ -18,7 +19,7 @@
if(radio_controller)
radio_controller.remove_object(src,air_frequency)
air_connection = null
..()
return ..()
/obj/machinery/door/airlock/alarmlock/initialize()
..()
+3 -18
View File
@@ -65,7 +65,7 @@
if(mecha.occupant && (src.allowed(mecha.occupant) || src.check_access_list(mecha.operation_req_access) || emergency == 1))
open()
else
flick("door_deny", src)
do_animate("deny")
return
return
@@ -97,7 +97,7 @@
if(allowed(user) || src.emergency == 1)
open()
else
flick("door_deny", src)
do_animate("deny")
return
@@ -135,24 +135,9 @@
close()
return
if(src.density)
flick("door_deny", src)
do_animate("deny")
return
/obj/machinery/door/emag_act(mob/user)
if(density && hasPower() && !emagged)
flick("door_spark", src)
sleep(6)
open()
emagged = 1
desc = "<span class='warning'>Its access panel is smoking slightly.</span>"
if(istype(src, /obj/machinery/door/airlock))
var/obj/machinery/door/airlock/A = src
A.lights = 0
A.locked = 1
A.loseMainPower()
A.loseBackupPower()
A.update_icon()
/obj/machinery/door/blob_act()
if(prob(40))
qdel(src)
+1 -1
View File
@@ -24,7 +24,7 @@
if(health == 0)
playsound(src, "shatter", 70, 1)
electronics = null
..()
return ..()
+1 -1
View File
@@ -15,7 +15,7 @@ var/list/doppler_arrays = list()
/obj/machinery/doppler_array/Destroy()
doppler_arrays -= src
..()
return ..()
/obj/machinery/doppler_array/process()
return PROCESS_KILL
+1 -1
View File
@@ -16,7 +16,7 @@
/obj/machinery/droneDispenser/Destroy()
SSmachine.processing -= src
..()
return ..()
/obj/machinery/droneDispenser/preloaded
metal = 5000
@@ -118,7 +118,7 @@
for(var/obj/machinery/doorButtons/access_button/A in world)
if(A.controller == src)
A.controller = null
..()
return ..()
/obj/machinery/doorButtons/airlock_controller/Topic(href, href_list)
if(..())
@@ -77,7 +77,7 @@
/obj/machinery/embedded_controller/radio/Destroy()
if(radio_controller)
radio_controller.remove_object(src,frequency)
..()
return ..()
/obj/machinery/embedded_controller/radio/initialize()
set_frequency(frequency)
+1 -1
View File
@@ -237,7 +237,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/
/obj/machinery/hologram/holopad/Destroy()
for (var/mob/living/silicon/ai/master in masters)
clear_holo(master)
..()
return ..()
/*
Holographic project of everything else.
+2 -1
View File
@@ -128,7 +128,7 @@ Class Procs:
SSmachine.processing -= src
if(occupant)
dropContents()
..()
return ..()
/obj/machinery/proc/locate_machinery()
return
@@ -336,6 +336,7 @@ Class Procs:
deconstruction()
playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1)
var/obj/machinery/constructable_frame/machine_frame/M = new /obj/machinery/constructable_frame/machine_frame(src.loc)
transfer_fingerprints_to(M)
M.state = 2
M.icon_state = "box_1"
for(var/obj/item/I in component_parts)
+2 -2
View File
@@ -45,7 +45,7 @@
/obj/machinery/magnetic_module/Destroy()
if(radio_controller)
radio_controller.remove_object(src, freq)
..()
. = ..()
center = null
// update the invisibility and icon
@@ -244,7 +244,7 @@
/obj/machinery/magnetic_controller/Destroy()
if(radio_controller)
radio_controller.remove_object(src, frequency)
..()
. = ..()
magnets = null
rpath = null
+1 -1
View File
@@ -36,7 +36,7 @@
/obj/machinery/navbeacon/Destroy()
navbeacons &= src //Remove from beacon list, if in one.
deliverybeacons &= src
..()
return ..()
// set the transponder codes assoc list from codes_txt
/obj/machinery/navbeacon/proc/set_codes()
+1 -1
View File
@@ -214,7 +214,7 @@ var/list/obj/machinery/newscaster/allCasters = list()
allCasters -= src
viewing_channel = null
photo = null
..()
return ..()
/obj/machinery/newscaster/update_icon()
if(!ispowered || isbroken)

Some files were not shown because too many files have changed in this diff Show More