mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-27 23:27:34 +01:00
Merge remote-tracking branch 'upstream/master' into xenoweedspread
This commit is contained in:
@@ -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"})
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
node3 = null
|
||||
A.build_network()
|
||||
releaseAirToTurf()
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold/disconnect(obj/machinery/atmospherics/reference)
|
||||
if(reference == node1)
|
||||
|
||||
@@ -77,7 +77,7 @@
|
||||
node4 = null
|
||||
A.build_network()
|
||||
releaseAirToTurf()
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/pipe/manifold4w/disconnect(obj/machinery/atmospherics/reference)
|
||||
if(reference == node1)
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
@@ -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--
|
||||
@@ -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()
|
||||
@@ -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 <)
|
||||
return trim(html_encode(name), max_length) //trim is "outside" because html_encode can expand single symbols into multiple symbols (such as turning < into <)
|
||||
|
||||
// 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
|
||||
|
||||
@@ -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.
|
||||
@@ -30,6 +30,7 @@
|
||||
/datum/action/Destroy()
|
||||
if(owner)
|
||||
Remove(owner)
|
||||
return ..()
|
||||
|
||||
/datum/action/proc/Grant(mob/living/T)
|
||||
if(owner)
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
/obj/screen/Destroy()
|
||||
master = null
|
||||
..()
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/screen/text
|
||||
|
||||
@@ -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
|
||||
@@ -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/"))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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>"
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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."
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
qdel(spell)
|
||||
linked_spells = null
|
||||
starting_spells = null
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/effect/proc_holder/spell/targeted/trigger/cast(list/targets)
|
||||
playMagSound()
|
||||
|
||||
@@ -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, \
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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"
|
||||
|
||||
@@ -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,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,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,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
|
||||
|
||||
|
||||
@@ -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,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
|
||||
|
||||
@@ -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]"
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -109,7 +109,7 @@
|
||||
/obj/machinery/dominator/Destroy()
|
||||
if(operating != -1)
|
||||
set_broken()
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/dominator/emp_act(severity)
|
||||
healthcheck(100)
|
||||
|
||||
@@ -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//
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -121,7 +121,7 @@
|
||||
|
||||
/obj/effect/meteor/Destroy()
|
||||
walk(src,0) //this cancels the walk_towards() proc
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/effect/meteor/New()
|
||||
..()
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
/obj/item/weapon/pinpointer/Destroy()
|
||||
active = 0
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/pinpointer/attack_self()
|
||||
if(!active)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
if(Beacon)
|
||||
qdel(Beacon)
|
||||
Beacon = null
|
||||
..()
|
||||
return ..()
|
||||
|
||||
// update the invisibility and icon
|
||||
/obj/machinery/bluespace_beacon/hide(intact)
|
||||
|
||||
@@ -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 ..()
|
||||
@@ -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()
|
||||
..()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
/obj/machinery/zvent/Destroy()
|
||||
SSair.atmos_machinery -= src
|
||||
..()
|
||||
return ..()
|
||||
|
||||
/obj/machinery/zvent/process_atmos()
|
||||
|
||||
|
||||
@@ -113,7 +113,7 @@
|
||||
/obj/machinery/bot/Destroy()
|
||||
qdel(Radio)
|
||||
qdel(botcard)
|
||||
..()
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/machinery/bot/proc/explode()
|
||||
|
||||
@@ -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/)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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 ..()
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
@@ -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()
|
||||
..()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
if(health == 0)
|
||||
playsound(src, "shatter", 70, 1)
|
||||
electronics = null
|
||||
..()
|
||||
return ..()
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user