mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-25 14:08:31 +01:00
Merge branch 'PipenetRevamp' of https://github.com/Aranclanos/-tg-station into Aranclanos-PipenetRevamp
Conflicts: _maps/map_files/tgstation.2.1.3.dmm code/ATMOSPHERICS/atmospherics.dm code/ATMOSPHERICS/components/portables_connector.dm
This commit is contained in:
@@ -679,9 +679,9 @@
|
||||
"anc" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/terminal,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard)
|
||||
"and" = (/obj/structure/rack,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
|
||||
"ane" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
|
||||
"anf" = (/obj/machinery/atmospherics/portables_connector/visible{dir = 4},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
|
||||
"anf" = (/obj/machinery/atmospherics/unary/portables_connector/visible{dir = 4},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
|
||||
"ang" = (/obj/machinery/atmospherics/trinary/filter{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
|
||||
"anh" = (/obj/machinery/atmospherics/portables_connector/visible{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
|
||||
"anh" = (/obj/machinery/atmospherics/unary/portables_connector/visible{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
|
||||
"ani" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 8; name = "Fore Port Solar APC"; pixel_x = -25; pixel_y = 3},/obj/machinery/camera{c_tag = "Fore Port Solar Control"; dir = 1},/turf/simulated/floor/plating,/area/maintenance/auxsolarport)
|
||||
"anj" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/hallway/primary/port)
|
||||
"ank" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/smes{charge = 0},/turf/simulated/floor/plating,/area/maintenance/auxsolarport)
|
||||
@@ -720,9 +720,9 @@
|
||||
"anR" = (/obj/machinery/light/small{dir = 4},/obj/structure/rack,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/fsmaint)
|
||||
"anS" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
|
||||
"anT" = (/obj/structure/closet,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/port)
|
||||
"anU" = (/obj/machinery/atmospherics/portables_connector/visible,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/fpmaint2)
|
||||
"anU" = (/obj/machinery/atmospherics/unary/portables_connector/visible,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/fpmaint2)
|
||||
"anV" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/fpmaint2)
|
||||
"anW" = (/obj/machinery/atmospherics/portables_connector/visible{dir = 1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
|
||||
"anW" = (/obj/machinery/atmospherics/unary/portables_connector/visible{dir = 1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
|
||||
"anX" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
|
||||
"anY" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
|
||||
"anZ" = (/obj/machinery/door/airlock/engineering{icon_state = "door_closed"; locked = 0; name = "Fore Port Solar Access"; req_access_txt = "10"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/auxsolarport)
|
||||
@@ -761,7 +761,7 @@
|
||||
"aoG" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison)
|
||||
"aoH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison)
|
||||
"aoI" = (/obj/structure/rack{dir = 1},/obj/item/clothing/suit/fire/firefighter,/obj/item/weapon/tank/oxygen,/obj/item/clothing/mask/gas,/obj/item/weapon/extinguisher,/obj/item/clothing/head/hardhat/red,/obj/item/clothing/glasses/meson,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/maintenance/fsmaint)
|
||||
"aoJ" = (/obj/machinery/atmospherics/portables_connector/visible{dir = 1},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/maintenance/fsmaint)
|
||||
"aoJ" = (/obj/machinery/atmospherics/unary/portables_connector/visible{dir = 1},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/maintenance/fsmaint)
|
||||
"aoK" = (/obj/machinery/light,/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/prison)
|
||||
"aoL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/fitness)
|
||||
"aoM" = (/obj/machinery/door/firedoor/border_only{dir = 4; name = "Firelock East"},/obj/machinery/door/airlock/security{aiControlDisabled = 0; icon_state = "door_closed"; id_tag = null; locked = 0; name = "Prisioner Transfer Centre"; req_access = null; req_access_txt = "2"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/security/transfer)
|
||||
@@ -1023,7 +1023,7 @@
|
||||
"atI" = (/obj/item/clothing/head/hardhat,/turf/simulated/floor/plating/airless,/area/space)
|
||||
"atJ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
|
||||
"atK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/light,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/hallway/primary/port)
|
||||
"atL" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
|
||||
"atL" = (/obj/machinery/atmospherics/unary/tank/air{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
|
||||
"atM" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
|
||||
"atN" = (/obj/machinery/door/airlock/external{req_access_txt = "13"},/turf/simulated/floor/plating,/area/maintenance/fpmaint)
|
||||
"atO" = (/obj/structure/rack,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
|
||||
@@ -1287,7 +1287,7 @@
|
||||
"ayM" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/bridge)
|
||||
"ayN" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/crew_quarters/fitness)
|
||||
"ayO" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
|
||||
"ayP" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
|
||||
"ayP" = (/obj/machinery/atmospherics/unary/tank/air{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fsmaint2)
|
||||
"ayQ" = (/obj/item/device/radio/beacon,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/bridge)
|
||||
"ayR" = (/obj/structure/rack,/obj/effect/spawner/lootdrop/maintenance{lootcount = 2; name = "2maintenance loot spawner"},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
|
||||
"ayS" = (/obj/machinery/camera{c_tag = "Bridge East"; dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor{dir = 4; icon_state = "browncorner"},/area/bridge)
|
||||
@@ -2617,7 +2617,7 @@
|
||||
"aYq" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
|
||||
"aYr" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/space,/area/space)
|
||||
"aYs" = (/obj/structure/stool/bed/chair/office/dark,/turf/simulated/floor/wood,/area/security/vacantoffice)
|
||||
"aYt" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/pipe/tank/air{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port)
|
||||
"aYt" = (/obj/machinery/light/small{dir = 8},/obj/machinery/atmospherics/unary/tank/air{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port)
|
||||
"aYu" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/valve,/turf/simulated/floor/plating,/area/maintenance/port)
|
||||
"aYv" = (/obj/structure/toilet{pixel_y = 8},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet)
|
||||
"aYw" = (/obj/machinery/door/airlock{name = "Unit 1"},/turf/simulated/floor{icon_state = "freezerfloor"},/area/crew_quarters/locker/locker_toilet)
|
||||
@@ -2687,7 +2687,7 @@
|
||||
"aZI" = (/obj/machinery/requests_console{department = "Detective's office"; pixel_x = -30; pixel_y = 0},/obj/structure/table/wood,/obj/item/device/camera{desc = "A one use - polaroid camera. 30 photos left."; name = "detectives camera"; pictures_left = 30},/obj/machinery/light/small{dir = 8},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office)
|
||||
"aZJ" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor/wood,/area/security/vacantoffice)
|
||||
"aZK" = (/obj/structure/table/wood,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/wood,/area/crew_quarters/sleep)
|
||||
"aZL" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port)
|
||||
"aZL" = (/obj/machinery/atmospherics/unary/tank/air{dir = 4},/turf/simulated/floor/plating,/area/maintenance/port)
|
||||
"aZM" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor,/area/ai_monitored/storage/eva)
|
||||
"aZN" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/ai_monitored/storage/eva)
|
||||
"aZO" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/ai_monitored/storage/eva)
|
||||
@@ -3245,7 +3245,7 @@
|
||||
"bku" = (/obj/structure/dispenser{pixel_x = -1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/atmos)
|
||||
"bkv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/atmos)
|
||||
"bkw" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor,/area/atmos)
|
||||
"bkx" = (/obj/machinery/atmospherics/portables_connector/visible,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/atmos)
|
||||
"bkx" = (/obj/machinery/atmospherics/unary/portables_connector/visible,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/atmos)
|
||||
"bky" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor,/area/atmos)
|
||||
"bkz" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/atmos)
|
||||
"bkA" = (/obj/machinery/computer/general_air_control{frequency = 1443; level = 3; name = "Distribution and Waste Monitor"; sensors = list("mair_in_meter" = "Mixed Air In", "air_sensor" = "Mixed Air Supply Tank", "mair_out_meter" = "Mixed Air Out", "dloop_atm_meter" = "Distribution Loop", "wloop_atm_meter" = "Waste Loop")},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "caution"; dir = 4},/area/atmos)
|
||||
@@ -3605,7 +3605,7 @@
|
||||
"brq" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
|
||||
"brr" = (/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 6},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
|
||||
"brs" = (/obj/machinery/atmospherics/valve{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
|
||||
"brt" = (/obj/machinery/atmospherics/portables_connector/visible{dir = 8},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
|
||||
"brt" = (/obj/machinery/atmospherics/unary/portables_connector/visible{dir = 8},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
|
||||
"bru" = (/obj/machinery/door/airlock/external{name = "Supply Dock Airlock"; req_access_txt = "31"},/turf/simulated/floor/plating,/area/quartermaster/storage)
|
||||
"brv" = (/turf/simulated/floor/plating,/area/quartermaster/storage)
|
||||
"brw" = (/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/quartermaster/storage)
|
||||
@@ -4066,8 +4066,8 @@
|
||||
"bAj" = (/obj/machinery/light,/obj/machinery/sleeper{icon_state = "sleeper-open"; dir = 8},/turf/simulated/floor,/area/medical/sleeper)
|
||||
"bAk" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor,/area/medical/sleeper)
|
||||
"bAl" = (/obj/structure/table/reinforced,/obj/item/weapon/wrench{pixel_x = 5; pixel_y = -5},/turf/simulated/floor,/area/medical/sleeper)
|
||||
"bAm" = (/obj/machinery/atmospherics/portables_connector/visible{dir = 1; name = "Connector Port (Air Supply)"},/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/light,/turf/simulated/floor,/area/medical/sleeper)
|
||||
"bAn" = (/obj/machinery/atmospherics/portables_connector/visible{dir = 1; name = "Connector Port (Air Supply)"},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor,/area/medical/sleeper)
|
||||
"bAm" = (/obj/machinery/atmospherics/unary/portables_connector/visible{dir = 1; name = "Connector Port (Air Supply)"},/obj/machinery/portable_atmospherics/canister/oxygen,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/light,/turf/simulated/floor,/area/medical/sleeper)
|
||||
"bAn" = (/obj/machinery/atmospherics/unary/portables_connector/visible{dir = 1; name = "Connector Port (Air Supply)"},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor,/area/medical/sleeper)
|
||||
"bAo" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{dir = 1},/turf/simulated/floor,/area/medical/sleeper)
|
||||
"bAp" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/sortjunction{dir = 2; icon_state = "pipe-j2s"; sortType = 14},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/maintenance/asmaint)
|
||||
"bAq" = (/obj/machinery/door/airlock/maintenance{name = "Mech Bay Maintenance"; req_access_txt = "29"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/assembly/chargebay)
|
||||
@@ -4283,9 +4283,9 @@
|
||||
"bEs" = (/obj/machinery/portable_atmospherics/canister,/obj/item/device/radio/intercom{pixel_y = 25},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"},/area/toxins/mixing)
|
||||
"bEt" = (/obj/machinery/portable_atmospherics/scrubber,/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"},/area/toxins/mixing)
|
||||
"bEu" = (/obj/machinery/portable_atmospherics/pump,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{dir = 2; icon_state = "warnwhite"},/area/toxins/mixing)
|
||||
"bEv" = (/obj/machinery/atmospherics/portables_connector/visible,/turf/simulated/floor{dir = 9; icon_state = "warnwhite"},/area/toxins/mixing)
|
||||
"bEw" = (/obj/machinery/atmospherics/portables_connector/visible,/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "warnwhite"; dir = 1},/area/toxins/mixing)
|
||||
"bEx" = (/obj/machinery/atmospherics/portables_connector/visible,/turf/simulated/floor{icon_state = "warnwhite"; dir = 5},/area/toxins/mixing)
|
||||
"bEv" = (/obj/machinery/atmospherics/unary/portables_connector/visible,/turf/simulated/floor{dir = 9; icon_state = "warnwhite"},/area/toxins/mixing)
|
||||
"bEw" = (/obj/machinery/atmospherics/unary/portables_connector/visible,/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "warnwhite"; dir = 1},/area/toxins/mixing)
|
||||
"bEx" = (/obj/machinery/atmospherics/unary/portables_connector/visible,/turf/simulated/floor{icon_state = "warnwhite"; dir = 5},/area/toxins/mixing)
|
||||
"bEy" = (/turf/simulated/wall/r_wall,/area/toxins/mixing)
|
||||
"bEz" = (/obj/machinery/door/airlock/research{name = "Genetics Research"; req_access_txt = "9"},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics)
|
||||
"bEA" = (/obj/structure/disposalpipe/sortjunction{sortType = 23},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics)
|
||||
@@ -4735,7 +4735,7 @@
|
||||
"bNc" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
|
||||
"bNd" = (/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 4},/obj/machinery/meter,/obj/machinery/embedded_controller/radio/airlock_controller{airpump_tag = "tox_airlock_pump"; exterior_door_tag = "tox_airlock_exterior"; id_tag = "tox_airlock_control"; interior_door_tag = "tox_airlock_interior"; pixel_x = -24; pixel_y = 0; sanitize_external = 1; sensor_tag = "tox_airlock_sensor"},/turf/simulated/floor{dir = 1; icon_state = "warnwhitecorner"},/area/toxins/mixing)
|
||||
"bNe" = (/obj/machinery/atmospherics/valve{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warnwhite"},/area/toxins/mixing)
|
||||
"bNf" = (/obj/machinery/atmospherics/portables_connector/visible{dir = 8},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/toxins/mixing)
|
||||
"bNf" = (/obj/machinery/atmospherics/unary/portables_connector/visible{dir = 8},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/toxins/mixing)
|
||||
"bNg" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
|
||||
"bNh" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/asmaint2)
|
||||
"bNi" = (/obj/structure/table,/obj/effect/decal/cleanable/cobweb,/obj/effect/spawner/lootdrop/maintenance,/turf/simulated/floor/plating,/area/maintenance/asmaint2)
|
||||
@@ -4749,9 +4749,9 @@
|
||||
"bNq" = (/turf/simulated/floor{icon_state = "caution"; dir = 4},/area/hallway/primary/aft)
|
||||
"bNr" = (/turf/simulated/wall,/area/atmos)
|
||||
"bNs" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/atmos)
|
||||
"bNt" = (/obj/machinery/atmospherics/portables_connector/visible{dir = 4},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor,/area/atmos)
|
||||
"bNt" = (/obj/machinery/atmospherics/unary/portables_connector/visible{dir = 4},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor,/area/atmos)
|
||||
"bNu" = (/obj/machinery/atmospherics/trinary/filter{dir = 4},/turf/simulated/floor,/area/atmos)
|
||||
"bNv" = (/obj/machinery/atmospherics/portables_connector/visible{dir = 8},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor,/area/atmos)
|
||||
"bNv" = (/obj/machinery/atmospherics/unary/portables_connector/visible{dir = 8},/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor,/area/atmos)
|
||||
"bNw" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = 6},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/item/clothing/head/welding{pixel_x = -3; pixel_y = 5},/obj/item/clothing/glasses/welding,/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics)
|
||||
"bNx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor{icon_state = "white"},/area/assembly/robotics)
|
||||
"bNy" = (/obj/machinery/pipedispenser,/turf/simulated/floor,/area/atmos)
|
||||
@@ -4813,7 +4813,7 @@
|
||||
"bOC" = (/obj/structure/extinguisher_cabinet{pixel_x = 5; pixel_y = -32},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/hallway/primary/central)
|
||||
"bOD" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/alarm{pixel_y = 23},/obj/machinery/camera{c_tag = "Atmospherics Monitoring"; dir = 2; network = list("SS13")},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{icon_state = "caution"; dir = 5},/area/atmos)
|
||||
"bOE" = (/obj/machinery/camera{c_tag = "Atmospherics North West"; dir = 4; network = list("SS13")},/obj/machinery/light{dir = 8},/turf/simulated/floor,/area/atmos)
|
||||
"bOF" = (/obj/machinery/atmospherics/portables_connector/visible{dir = 1},/turf/simulated/floor,/area/atmos)
|
||||
"bOF" = (/obj/machinery/atmospherics/unary/portables_connector/visible{dir = 1},/turf/simulated/floor,/area/atmos)
|
||||
"bOG" = (/turf/simulated/floor,/area/atmos)
|
||||
"bOH" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engine/engineering)
|
||||
"bOI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/atmos)
|
||||
@@ -4849,7 +4849,7 @@
|
||||
"bPm" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/wall,/area/janitor)
|
||||
"bPn" = (/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 4},/obj/machinery/meter,/obj/machinery/door_control{id = "mixvent"; name = "Mixing Room Vent Control"; pixel_x = -25; pixel_y = 5; req_access_txt = "7"},/obj/machinery/ignition_switch{id = "mixingsparker"; pixel_x = -25; pixel_y = -5},/turf/simulated/floor{dir = 4; icon_state = "warnwhitecorner"},/area/toxins/mixing)
|
||||
"bPo" = (/obj/machinery/atmospherics/valve{dir = 4},/obj/machinery/light,/turf/simulated/floor{dir = 4; icon_state = "warnwhite"},/area/toxins/mixing)
|
||||
"bPp" = (/obj/machinery/atmospherics/portables_connector/visible{dir = 8},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/toxins/mixing)
|
||||
"bPp" = (/obj/machinery/atmospherics/unary/portables_connector/visible{dir = 8},/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/toxins/mixing)
|
||||
"bPq" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/maintenance/asmaint2)
|
||||
"bPr" = (/obj/structure/window/reinforced{dir = 1; pixel_y = 1},/obj/item/target,/turf/simulated/floor/plating{icon_state = "warnplate"},/area/toxins/test_area)
|
||||
"bPs" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/toxins/test_area)
|
||||
@@ -4965,7 +4965,7 @@
|
||||
"bRy" = (/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/misc_lab)
|
||||
"bRz" = (/obj/machinery/requests_console{department = "Science"; departmentType = 2; dir = 2; name = "Science Requests Console"; pixel_x = 0; pixel_y = 30},/turf/simulated/floor,/area/toxins/misc_lab)
|
||||
"bRA" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/storage/toolbox/mechanical,/obj/item/clothing/ears/earmuffs,/obj/machinery/camera{c_tag = "Testing Lab North"; dir = 2; network = list("SS13","RD")},/turf/simulated/floor,/area/toxins/misc_lab)
|
||||
"bRB" = (/obj/machinery/atmospherics/portables_connector/visible{dir = 4},/turf/simulated/floor/engine,/area/toxins/misc_lab)
|
||||
"bRB" = (/obj/machinery/atmospherics/unary/portables_connector/visible{dir = 4},/turf/simulated/floor/engine,/area/toxins/misc_lab)
|
||||
"bRC" = (/obj/machinery/atmospherics/pipe/manifold/general/visible{dir = 1},/turf/simulated/floor/engine,/area/toxins/misc_lab)
|
||||
"bRD" = (/obj/structure/filingcabinet/filingcabinet,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/quartermaster/office)
|
||||
"bRE" = (/obj/machinery/atmospherics/unary/heat_reservoir/heater{dir = 8},/turf/simulated/floor/engine,/area/toxins/misc_lab)
|
||||
@@ -4991,9 +4991,9 @@
|
||||
"bRY" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint)
|
||||
"bRZ" = (/obj/machinery/computer/atmos_alert,/turf/simulated/floor{icon_state = "caution"; dir = 4},/area/atmos)
|
||||
"bSa" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor/plating,/area/maintenance/asmaint)
|
||||
"bSb" = (/obj/machinery/atmospherics/portables_connector/visible{dir = 4},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor,/area/atmos)
|
||||
"bSb" = (/obj/machinery/atmospherics/unary/portables_connector/visible{dir = 4},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor,/area/atmos)
|
||||
"bSc" = (/obj/machinery/atmospherics/trinary/mixer{dir = 8},/turf/simulated/floor,/area/atmos)
|
||||
"bSd" = (/obj/machinery/atmospherics/portables_connector/visible{dir = 8},/turf/simulated/floor,/area/atmos)
|
||||
"bSd" = (/obj/machinery/atmospherics/unary/portables_connector/visible{dir = 8},/turf/simulated/floor,/area/atmos)
|
||||
"bSe" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{dir = 6},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/atmos)
|
||||
"bSf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{dir = 4},/turf/simulated/floor,/area/atmos)
|
||||
"bSg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{dir = 4},/obj/machinery/door/firedoor/border_only{dir = 8; name = "Firelock West"},/obj/machinery/door/airlock/glass_atmos{name = "Distribution Loop"; req_access_txt = "24"},/turf/simulated/floor,/area/atmos)
|
||||
@@ -5126,7 +5126,7 @@
|
||||
"bUD" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/toxins/xenobiology)
|
||||
"bUE" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable,/obj/machinery/door/poddoor/preopen{id = "xenobio8"; name = "containment blast door"},/turf/simulated/floor/engine,/area/toxins/xenobiology)
|
||||
"bUF" = (/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/disposaloutlet{dir = 1},/turf/simulated/floor/engine,/area/toxins/xenobiology)
|
||||
"bUG" = (/obj/machinery/atmospherics/portables_connector/visible{dir = 4},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/misc_lab)
|
||||
"bUG" = (/obj/machinery/atmospherics/unary/portables_connector/visible{dir = 4},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/misc_lab)
|
||||
"bUH" = (/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 10; pixel_x = 0; initialize_directions = 10},/turf/simulated/floor,/area/toxins/misc_lab)
|
||||
"bUI" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/misc_lab)
|
||||
"bUJ" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint)
|
||||
@@ -5160,7 +5160,7 @@
|
||||
"bVl" = (/obj/machinery/space_heater,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
|
||||
"bVm" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/wall,/area/maintenance/asmaint2)
|
||||
"bVn" = (/obj/structure/rack{dir = 1},/obj/effect/decal/cleanable/cobweb2,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/maintenance/asmaint2)
|
||||
"bVo" = (/obj/machinery/atmospherics/portables_connector/visible{dir = 4},/obj/machinery/portable_atmospherics/pump,/turf/simulated/floor{icon_state = "arrival"; dir = 8},/area/atmos)
|
||||
"bVo" = (/obj/machinery/atmospherics/unary/portables_connector/visible{dir = 4},/obj/machinery/portable_atmospherics/pump,/turf/simulated/floor{icon_state = "arrival"; dir = 8},/area/atmos)
|
||||
"bVp" = (/obj/machinery/atmospherics/pipe/manifold/cyan/visible{dir = 1},/obj/machinery/meter,/turf/simulated/wall/r_wall,/area/atmos)
|
||||
"bVq" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
|
||||
"bVr" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
|
||||
@@ -5192,7 +5192,7 @@
|
||||
"bVR" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall,/area/toxins/xenobiology)
|
||||
"bVS" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
|
||||
"bVT" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
|
||||
"bVU" = (/obj/machinery/atmospherics/portables_connector/visible{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/misc_lab)
|
||||
"bVU" = (/obj/machinery/atmospherics/unary/portables_connector/visible{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/misc_lab)
|
||||
"bVV" = (/obj/machinery/atmospherics/pipe/manifold/general/visible{dir = 4; initialize_directions = 11},/obj/machinery/meter,/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/misc_lab)
|
||||
"bVW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor,/area/toxins/misc_lab)
|
||||
"bVX" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft)
|
||||
@@ -5274,7 +5274,7 @@
|
||||
"bXv" = (/obj/item/device/radio/intercom{dir = 8; freerange = 1; name = "Station Intercom (Telecoms)"; pixel_x = 0; pixel_y = 26},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/tcommsat/computer)
|
||||
"bXw" = (/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/tcommsat/computer)
|
||||
"bXx" = (/obj/structure/grille,/obj/structure/window/reinforced/tinted{dir = 1},/obj/structure/window/reinforced/tinted,/obj/structure/window/reinforced/tinted{dir = 4; icon_state = "twindow"},/obj/structure/window/reinforced/tinted{dir = 8; icon_state = "twindow"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
|
||||
"bXy" = (/obj/machinery/atmospherics/portables_connector/visible{dir = 4},/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor{dir = 8; icon_state = "escape"},/area/atmos)
|
||||
"bXy" = (/obj/machinery/atmospherics/unary/portables_connector/visible{dir = 4},/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor{dir = 8; icon_state = "escape"},/area/atmos)
|
||||
"bXz" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{dir = 1},/obj/machinery/meter,/turf/simulated/wall/r_wall,/area/atmos)
|
||||
"bXA" = (/obj/structure/reagent_dispensers/watertank,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
|
||||
"bXB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/asmaint2)
|
||||
@@ -5328,7 +5328,7 @@
|
||||
"bYx" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/turf/simulated/floor,/area/tcommsat/computer)
|
||||
"bYy" = (/turf/simulated/floor,/area/tcommsat/computer)
|
||||
"bYz" = (/obj/structure/table,/obj/item/weapon/paper_bin,/turf/simulated/floor,/area/tcommsat/computer)
|
||||
"bYA" = (/obj/machinery/atmospherics/portables_connector/visible{dir = 4},/obj/machinery/portable_atmospherics/scrubber,/obj/machinery/light/small,/turf/simulated/floor{dir = 8; icon_state = "escape"},/area/atmos)
|
||||
"bYA" = (/obj/machinery/atmospherics/unary/portables_connector/visible{dir = 4},/obj/machinery/portable_atmospherics/scrubber,/obj/machinery/light/small,/turf/simulated/floor{dir = 8; icon_state = "escape"},/area/atmos)
|
||||
"bYB" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{dir = 9},/turf/simulated/wall/r_wall,/area/atmos)
|
||||
"bYC" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{tag = "icon-manifold-r-f (NORTH)"; dir = 1},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
|
||||
"bYD" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/atmos)
|
||||
@@ -5337,8 +5337,8 @@
|
||||
"bYG" = (/obj/structure/filingcabinet,/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/security/checkpoint/engineering)
|
||||
"bYH" = (/obj/structure/closet/fireaxecabinet{pixel_x = -32; pixel_y = 0},/turf/simulated/floor,/area/atmos)
|
||||
"bYI" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area/maintenance/asmaint2)
|
||||
"bYJ" = (/obj/machinery/atmospherics/portables_connector/visible{dir = 4},/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor{dir = 2; icon_state = "bot"},/area/atmos)
|
||||
"bYK" = (/obj/machinery/atmospherics/portables_connector/visible{dir = 8},/turf/simulated/floor{dir = 2; icon_state = "bot"},/area/atmos)
|
||||
"bYJ" = (/obj/machinery/atmospherics/unary/portables_connector/visible{dir = 4},/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor{dir = 2; icon_state = "bot"},/area/atmos)
|
||||
"bYK" = (/obj/machinery/atmospherics/unary/portables_connector/visible{dir = 8},/turf/simulated/floor{dir = 2; icon_state = "bot"},/area/atmos)
|
||||
"bYL" = (/obj/machinery/atmospherics/pipe/manifold/yellow/visible{dir = 8},/turf/simulated/floor,/area/atmos)
|
||||
"bYM" = (/obj/machinery/camera{c_tag = "Atmospherics East"; dir = 8; network = list("SS13")},/obj/machinery/atmospherics/binary/pump{dir = 8; name = "Plasma Outlet Pump"; on = 0},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/atmos)
|
||||
"bYN" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 0; frequency = 1441; id_tag = "tox_out"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine{carbon_dioxide = 0; name = "plasma floor"; nitrogen = 0; oxygen = 0; toxins = 70000},/area/atmos)
|
||||
@@ -5372,7 +5372,7 @@
|
||||
"bZp" = (/obj/machinery/atmospherics/pipe/simple/insulated,/turf/simulated/wall/r_wall,/area/maintenance/incinerator)
|
||||
"bZq" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/cyan/visible,/turf/space,/area/space)
|
||||
"bZr" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,/turf/simulated/floor/plating,/area/maintenance/incinerator)
|
||||
"bZs" = (/obj/machinery/atmospherics/valve/open{tag = "icon-mvalve_map (EAST)"; icon_state = "mvalve_map"; dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/medical/virology)
|
||||
"bZs" = (/obj/machinery/atmospherics/binary/valve/open{tag = "icon-mvalve_map (EAST)"; icon_state = "mvalve_map"; dir = 4},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/medical/virology)
|
||||
"bZt" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{tag = "icon-manifold-r-f (NORTH)"; dir = 1},/turf/simulated/floor/plating,/area/maintenance/asmaint)
|
||||
"bZu" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,/turf/space,/area/space)
|
||||
"bZv" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating,/area/maintenance/aft)
|
||||
@@ -5665,7 +5665,7 @@
|
||||
"ceW" = (/obj/structure/closet/emcloset,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/maintenance/asmaint2)
|
||||
"ceX" = (/obj/structure/closet/crate{icon_state = "crateopen"; opened = 1},/obj/item/weapon/ore/bananium,/turf/simulated/floor/mineral/bananium/airless,/area/space)
|
||||
"ceY" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
|
||||
"ceZ" = (/obj/machinery/atmospherics/pipe/tank/air,/turf/simulated/floor/plating,/area/maintenance/asmaint2)
|
||||
"ceZ" = (/obj/machinery/atmospherics/unary/tank/air,/turf/simulated/floor/plating,/area/maintenance/asmaint2)
|
||||
"cfa" = (/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor{dir = 2; icon_state = "bot"},/area/toxins/misc_lab)
|
||||
"cfb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/toxins/misc_lab)
|
||||
"cfc" = (/obj/machinery/door/window/eastright{base_state = "left"; dir = 8; icon_state = "left"; name = "Research Division Delivery"; req_access_txt = "47"},/turf/simulated/floor{icon_state = "delivery"},/area/toxins/misc_lab)
|
||||
@@ -5786,7 +5786,7 @@
|
||||
"chn" = (/obj/machinery/computer/general_air_control/large_tank_control{frequency = 1443; input_tag = "air_in"; name = "Mixed Air Supply Control"; output_tag = "air_out"; pressure_setting = 2000; sensors = list("air_sensor" = "Tank")},/turf/simulated/floor{icon_state = "arrival"},/area/atmos)
|
||||
"cho" = (/obj/machinery/camera{c_tag = "Atmospherics South East"; dir = 1},/obj/machinery/atmospherics/binary/pump{dir = 1; name = "Air Outlet Pump"; on = 1},/turf/simulated/floor{icon_state = "arrival"; dir = 6},/area/atmos)
|
||||
"chp" = (/obj/machinery/igniter{icon_state = "igniter0"; id = "Incinerator"; luminosity = 2; on = 0},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/engine/vacuum,/area/maintenance/incinerator)
|
||||
"chq" = (/obj/machinery/atmospherics/portables_connector/visible{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint)
|
||||
"chq" = (/obj/machinery/atmospherics/unary/portables_connector/visible{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint)
|
||||
"chr" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/maintenance/port)
|
||||
"chs" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall,/area/maintenance/port)
|
||||
"cht" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{tag = "icon-manifold-r-f (NORTH)"; dir = 1},/turf/simulated/floor/plating,/area/maintenance/asmaint)
|
||||
@@ -6069,7 +6069,7 @@
|
||||
"cmK" = (/obj/machinery/light/small,/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/atmos)
|
||||
"cmL" = (/obj/machinery/light/small,/turf/simulated/floor/engine{name = "o2 floor"; nitrogen = 0; oxygen = 100000},/area/atmos)
|
||||
"cmM" = (/obj/machinery/light/small,/turf/simulated/floor/engine{name = "air floor"; nitrogen = 10580; oxygen = 2644},/area/atmos)
|
||||
"cmN" = (/obj/machinery/atmospherics/pipe/vent{dir = 1},/turf/simulated/floor/plating/airless,/area/space)
|
||||
"cmN" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1},/turf/simulated/floor/plating/airless,/area/space)
|
||||
"cmO" = (/obj/machinery/light/small{dir = 4},/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/plating,/area/maintenance/asmaint2)
|
||||
"cmP" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "dark"},/area/engine/engine_smes)
|
||||
"cmQ" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 2; icon_state = "neutralfull"},/area/engine/chiefs_office)
|
||||
@@ -8169,7 +8169,7 @@
|
||||
"dbe" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
|
||||
"dbf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating/airless,/area/mine/abandoned)
|
||||
"dbg" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/mine/abandoned)
|
||||
"dbh" = (/obj/machinery/atmospherics/pipe/tank/air,/turf/simulated/floor{dir = 5; icon_state = "yellow"},/area/ai_monitored/storage/secure)
|
||||
"dbh" = (/obj/machinery/atmospherics/unary/tank/air,/turf/simulated/floor{dir = 5; icon_state = "yellow"},/area/ai_monitored/storage/secure)
|
||||
"dbi" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/wall/r_wall,/area/ai_monitored/storage/secure)
|
||||
"dbj" = (/obj/structure/table,/obj/item/device/electropack,/turf/simulated/floor{icon_state = "whitehall"; dir = 2},/area/security/prison)
|
||||
"dbk" = (/obj/item/weapon/shard,/obj/item/stack/rods,/turf/simulated/floor/plating/airless,/area/mine/abandoned)
|
||||
@@ -8214,7 +8214,7 @@
|
||||
"dbX" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/port_gen/pacman{anchored = 1},/turf/simulated/floor/plating,/area/mine/north_outpost)
|
||||
"dbY" = (/obj/machinery/power/terminal{dir = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/mine/north_outpost)
|
||||
"dbZ" = (/obj/machinery/power/smes,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/mine/north_outpost)
|
||||
"dca" = (/obj/machinery/atmospherics/pipe/tank/air,/turf/simulated/floor/plating,/area/mine/north_outpost)
|
||||
"dca" = (/obj/machinery/atmospherics/unary/tank/air,/turf/simulated/floor/plating,/area/mine/north_outpost)
|
||||
"dcb" = (/obj/effect/decal/remains/human,/turf/simulated/floor/airless{icon_state = "damaged5"},/area/mine/abandoned)
|
||||
"dcc" = (/obj/structure/alien/weeds,/turf/simulated/floor/airless{icon_state = "floorscorched1"},/area/mine/abandoned)
|
||||
"dcd" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/aft)
|
||||
@@ -8474,7 +8474,7 @@
|
||||
"dgX" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/mine/laborcamp/security)
|
||||
"dgY" = (/turf/simulated/floor/plating,/area/mine/laborcamp/security)
|
||||
"dgZ" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8},/obj/machinery/meter,/turf/simulated/floor/plating,/area/mine/laborcamp/security)
|
||||
"dha" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/turf/simulated/floor/plating,/area/mine/laborcamp/security)
|
||||
"dha" = (/obj/machinery/atmospherics/unary/tank/air{dir = 8},/turf/simulated/floor/plating,/area/mine/laborcamp/security)
|
||||
"dhb" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/mine/laborcamp/security)
|
||||
"dhc" = (/obj/structure/table,/obj/machinery/recharger,/turf/simulated/floor,/area/mine/laborcamp/security)
|
||||
"dhd" = (/obj/machinery/computer/secure_data,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/mine/laborcamp/security)
|
||||
@@ -8741,7 +8741,7 @@
|
||||
"dme" = (/turf/simulated/floor/airless{icon_state = "asteroidwarning"; dir = 2},/area/mine/production)
|
||||
"dmf" = (/obj/machinery/atmospherics/pipe/simple,/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor,/area/mine/production)
|
||||
"dmg" = (/turf/simulated/floor/plating/airless{icon_state = "asteroidplating"},/area/mine/production)
|
||||
"dmh" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 1; initialize_directions = 0; level = 1},/turf/simulated/floor/plating,/area/mine/west_outpost)
|
||||
"dmh" = (/obj/machinery/atmospherics/unary/tank/air{dir = 1; initialize_directions = 0; level = 1},/turf/simulated/floor/plating,/area/mine/west_outpost)
|
||||
"dmi" = (/obj/machinery/power/port_gen/pacman{anchored = 1},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/mine/west_outpost)
|
||||
"dmj" = (/obj/machinery/power/terminal{dir = 4},/obj/machinery/light/small,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/mine/west_outpost)
|
||||
"dmk" = (/obj/machinery/power/smes,/obj/structure/cable,/turf/simulated/floor/plating,/area/mine/west_outpost)
|
||||
@@ -8785,7 +8785,7 @@
|
||||
"dmW" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/o2{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/firstaid/regular,/turf/simulated/floor{icon_state = "white"},/area/mine/living_quarters)
|
||||
"dmX" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/mine/living_quarters)
|
||||
"dmY" = (/obj/machinery/atmospherics/pipe/manifold{dir = 8},/obj/machinery/meter,/turf/simulated/floor/plating,/area/mine/living_quarters)
|
||||
"dmZ" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/turf/simulated/floor/plating,/area/mine/living_quarters)
|
||||
"dmZ" = (/obj/machinery/atmospherics/unary/tank/air{dir = 8},/turf/simulated/floor/plating,/area/mine/living_quarters)
|
||||
"dna" = (/obj/structure/ore_box,/turf/simulated/floor{icon_state = "warning"},/area/mine/living_quarters)
|
||||
"dnb" = (/turf/simulated/floor{icon_state = "warning"},/area/mine/living_quarters)
|
||||
"dnc" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{icon_state = "warning"},/area/mine/living_quarters)
|
||||
@@ -8863,7 +8863,7 @@
|
||||
"dow" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/ai_monitored/storage/secure)
|
||||
"dox" = (/obj/machinery/computer/station_alert,/turf/simulated/floor{icon_state = "yellow"},/area/ai_monitored/storage/secure)
|
||||
"doy" = (/obj/structure/table,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/glass{amount = 50},/turf/simulated/floor{icon_state = "yellow"},/area/ai_monitored/storage/secure)
|
||||
"doz" = (/obj/machinery/atmospherics/portables_connector/visible{dir = 1; name = "Auxiliary MiniSat Distribution Port"},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor{icon_state = "yellow"; dir = 10},/area/ai_monitored/storage/secure)
|
||||
"doz" = (/obj/machinery/atmospherics/unary/portables_connector/visible{dir = 1; name = "Auxiliary MiniSat Distribution Port"},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor{icon_state = "yellow"; dir = 10},/area/ai_monitored/storage/secure)
|
||||
"doA" = (/obj/machinery/power/apc{cell_type = 5000; dir = 4; name = "Armory APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/ai_monitored/security/armory)
|
||||
"doB" = (/obj/structure/sign/securearea,/turf/simulated/wall,/area/engine/engineering)
|
||||
"doC" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/ai_monitored/security/armory)
|
||||
@@ -8915,8 +8915,8 @@
|
||||
"dpy" = (/obj/effect/decal/cleanable/dirt,/obj/item/device/radio/beacon,/turf/simulated/floor/plating/airless,/area/AIsattele)
|
||||
"dpz" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden,/turf/simulated/floor,/area/engine/break_room)
|
||||
"dpA" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/atmos)
|
||||
"dpB" = (/obj/machinery/atmospherics/portables_connector/visible{dir = 8},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/medical/virology)
|
||||
"dpC" = (/obj/machinery/atmospherics/pipe/tank/air{dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 5},/area/medical/virology)
|
||||
"dpB" = (/obj/machinery/atmospherics/unary/portables_connector/visible{dir = 8},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/medical/virology)
|
||||
"dpC" = (/obj/machinery/atmospherics/unary/tank/air{dir = 8},/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 5},/area/medical/virology)
|
||||
"dpD" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint)
|
||||
"dpE" = (/obj/machinery/camera{c_tag = "Atmospherics South West"; dir = 4; network = list("SS13")},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor,/area/atmos)
|
||||
"dpF" = (/obj/structure/table,/obj/item/clothing/glasses/meson,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor,/area/engine/break_room)
|
||||
@@ -9083,7 +9083,7 @@
|
||||
"dsK" = (/obj/structure/table,/obj/item/weapon/wrench,/obj/item/device/assembly/infra,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start)
|
||||
"dsL" = (/obj/structure/table,/obj/item/weapon/screwdriver{pixel_y = 9},/obj/item/device/assembly/voice{pixel_y = 3},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start)
|
||||
"dsM" = (/obj/structure/table,/obj/item/weapon/stock_parts/cell/high{pixel_x = -3; pixel_y = 3},/obj/item/weapon/stock_parts/cell/high,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start)
|
||||
"dsN" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/vent{dir = 8},/turf/simulated/floor/plating/airless,/area/space)
|
||||
"dsN" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/unary/outlet_injector{dir = 8},/turf/simulated/floor/plating/airless,/area/space)
|
||||
"dsO" = (/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = -28; req_access_txt = "0"},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start)
|
||||
"dsP" = (/obj/structure/table,/obj/item/stack/medical/ointment,/obj/item/stack/medical/bruise_pack,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start)
|
||||
"dsQ" = (/obj/structure/table,/obj/machinery/cell_charger,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/syndicate_station/start)
|
||||
@@ -9212,12 +9212,12 @@
|
||||
"dvm" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 6},/turf/simulated/floor/plating{icon_state = "warnplate"},/area/maintenance/asmaint)
|
||||
"dvn" = (/obj/structure/sign/fire{pixel_x = 0; pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/asmaint)
|
||||
"dvo" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
|
||||
"dvp" = (/obj/structure/sign/nosmoking_2{pixel_x = -28},/obj/machinery/atmospherics/portables_connector/visible{dir = 4; name = "input gas connector port"},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
|
||||
"dvp" = (/obj/structure/sign/nosmoking_2{pixel_x = -28},/obj/machinery/atmospherics/unary/portables_connector/visible{dir = 4; name = "input gas connector port"},/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
|
||||
"dvq" = (/obj/structure/closet/emcloset,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor/plating,/area/maintenance/asmaint)
|
||||
"dvr" = (/obj/machinery/atmospherics/binary/pump{dir = 4; name = "input port pump"},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
|
||||
"dvs" = (/obj/machinery/power/terminal{icon_state = "term"; dir = 1},/obj/machinery/alarm{desc = "This particular atmos control unit appears to have no access restrictions."; dir = 8; icon_state = "alarm0"; locked = 0; name = "all-access air alarm"; pixel_x = 24; req_access = "0"; req_one_access = "0"},/obj/structure/cable/yellow{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
|
||||
"dvt" = (/obj/structure/disposalpipe/segment,/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
|
||||
"dvu" = (/obj/machinery/atmospherics/portables_connector/visible{name = "output gas connector port"},/obj/machinery/portable_atmospherics/canister,/obj/structure/sign/nosmoking_2{pixel_x = 28},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
|
||||
"dvu" = (/obj/machinery/atmospherics/unary/portables_connector/visible{name = "output gas connector port"},/obj/machinery/portable_atmospherics/canister,/obj/structure/sign/nosmoking_2{pixel_x = 28},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
|
||||
"dvv" = (/obj/machinery/atmospherics/pipe/manifold/general/visible{dir = 4; initialize_directions = 11},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
|
||||
"dvw" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft)
|
||||
"dvx" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating/airless,/area/space)
|
||||
@@ -9227,9 +9227,9 @@
|
||||
"dvB" = (/obj/structure/disposaloutlet{dir = 8},/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/plating/airless,/area/space)
|
||||
"dvC" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/maintenance/aft)
|
||||
"dvD" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/structure/sign/deathsposal{pixel_y = 32},/turf/simulated/floor/plating,/area/maintenance/aft)
|
||||
"dvE" = (/obj/machinery/atmospherics/portables_connector/visible,/turf/simulated/floor/plating,/area/maintenance/aft)
|
||||
"dvF" = (/obj/effect/decal/cleanable/cobweb2,/obj/machinery/atmospherics/portables_connector/visible,/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plating,/area/maintenance/aft)
|
||||
"dvG" = (/obj/machinery/atmospherics/pipe/vent,/turf/simulated/floor/plating/airless,/area/space)
|
||||
"dvE" = (/obj/machinery/atmospherics/unary/portables_connector/visible,/turf/simulated/floor/plating,/area/maintenance/aft)
|
||||
"dvF" = (/obj/effect/decal/cleanable/cobweb2,/obj/machinery/atmospherics/unary/portables_connector/visible,/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plating,/area/maintenance/aft)
|
||||
"dvG" = (/obj/machinery/atmospherics/unary/outlet_injector,/turf/simulated/floor/plating/airless,/area/space)
|
||||
"dvH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/aft)
|
||||
"dvI" = (/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/aft)
|
||||
"dvJ" = (/obj/machinery/atmospherics/pipe/simple/general/visible,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/aft)
|
||||
@@ -9239,7 +9239,7 @@
|
||||
"dvN" = (/obj/structure/sign/nosmoking_2{pixel_x = -28},/turf/simulated/floor/plating,/area/maintenance/aft)
|
||||
"dvO" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/visible,/turf/simulated/floor/plating,/area/maintenance/aft)
|
||||
"dvP" = (/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 4},/turf/simulated/floor/plating,/area/maintenance/aft)
|
||||
"dvQ" = (/obj/machinery/atmospherics/portables_connector/visible{dir = 4},/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor/plating,/area/maintenance/aft)
|
||||
"dvQ" = (/obj/machinery/atmospherics/unary/portables_connector/visible{dir = 4},/obj/machinery/portable_atmospherics/canister,/turf/simulated/floor/plating,/area/maintenance/aft)
|
||||
"dvR" = (/obj/machinery/atmospherics/binary/pump{dir = 8; name = "Mix to Port"; on = 0},/turf/simulated/floor/plating,/area/maintenance/aft)
|
||||
"dvS" = (/obj/machinery/door/airlock/maintenance{name = "Incinerator Access"; req_access_txt = "12"},/obj/structure/barricade/wooden{name = "wooden barricade (CLOSED)"},/turf/simulated/floor/plating,/area/maintenance/aft)
|
||||
"dvT" = (/obj/machinery/atmospherics/pipe/manifold/general/visible{dir = 4; initialize_directions = 11},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/aft)
|
||||
@@ -9248,7 +9248,7 @@
|
||||
"dvW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/visible{dir = 5},/turf/simulated/floor/plating,/area/maintenance/aft)
|
||||
"dvX" = (/obj/machinery/atmospherics/pipe/simple/general/visible{dir = 10},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
|
||||
"dvY" = (/obj/machinery/atmospherics/binary/pump{dir = 4; name = "plasma tank pump"},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
|
||||
"dvZ" = (/obj/machinery/atmospherics/pipe/tank/toxins{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
|
||||
"dvZ" = (/obj/machinery/atmospherics/unary/tank/toxins{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
|
||||
"dwa" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/binary/pump{dir = 8; name = "Mix to Space"; on = 1},/turf/simulated/floor/plating/airless,/area/space)
|
||||
"dwb" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/asmaint)
|
||||
"dwc" = (/obj/machinery/atmospherics/pipe/manifold4w/general{level = 2},/obj/machinery/meter,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
|
||||
|
||||
@@ -24,43 +24,30 @@ Pipelines + Other Objects -> Pipe network
|
||||
var/global/list/iconsetids = list()
|
||||
var/global/list/pipeimages = list()
|
||||
|
||||
/*
|
||||
/obj/machinery/atmospherics/process()
|
||||
//build_network()
|
||||
*/
|
||||
|
||||
/obj/machinery/atmospherics/New()
|
||||
..()
|
||||
if(can_unwrench)
|
||||
stored = new(src, make_from=src)
|
||||
|
||||
/obj/machinery/atmospherics/proc/network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference)
|
||||
// Check to see if should be added to network. Add self if so and adjust variables appropriately.
|
||||
// Note don't forget to have neighbors look as well!
|
||||
|
||||
return null
|
||||
/obj/machinery/atmospherics/proc/returnPipenet()
|
||||
return
|
||||
|
||||
/obj/machinery/atmospherics/proc/returnPipenetAir()
|
||||
return
|
||||
|
||||
/obj/machinery/atmospherics/proc/setPipenet()
|
||||
return
|
||||
|
||||
/obj/machinery/atmospherics/proc/replacePipenet()
|
||||
return
|
||||
|
||||
/obj/machinery/atmospherics/proc/build_network()
|
||||
// Called to build a network from this node
|
||||
|
||||
return null
|
||||
|
||||
/obj/machinery/atmospherics/proc/return_network(obj/machinery/atmospherics/reference)
|
||||
// Returns pipe_network associated with connection to reference
|
||||
// Notes: should create network if necessary
|
||||
// Should never return null
|
||||
|
||||
return null
|
||||
|
||||
/obj/machinery/atmospherics/proc/reassign_network(datum/pipe_network/old_network, datum/pipe_network/new_network)
|
||||
// Used when two pipe_networks are combining
|
||||
|
||||
/obj/machinery/atmospherics/proc/return_network_air(datum/network/reference)
|
||||
// Return a list of gas_mixture(s) in the object
|
||||
// associated with reference pipe_network for use in rebuilding the networks gases list
|
||||
// Is permitted to return null
|
||||
return
|
||||
|
||||
/obj/machinery/atmospherics/proc/disconnect(obj/machinery/atmospherics/reference)
|
||||
return
|
||||
|
||||
/obj/machinery/atmospherics/proc/icon_addintact(var/obj/machinery/atmospherics/node, var/connected)
|
||||
var/image/img = getpipeimage('icons/obj/atmospherics/binary_devices.dmi', "pipe_intact", get_dir(src,node), node.pipe_color)
|
||||
@@ -86,7 +73,7 @@ Pipelines + Other Objects -> Pipe network
|
||||
var/datum/gas_mixture/int_air = return_air()
|
||||
var/datum/gas_mixture/env_air = loc.return_air()
|
||||
if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE)
|
||||
user << "<span class='danger'>You cannot unwrench [src], it is too exerted due to internal pressure.</span>"
|
||||
user << "<span class='danger'>You cannot unwrench this [src], it is too exerted due to internal pressure.</span>"
|
||||
add_fingerprint(user)
|
||||
return 1
|
||||
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
|
||||
@@ -113,8 +100,8 @@ Pipelines + Other Objects -> Pipe network
|
||||
qdel(meter)
|
||||
qdel(src)
|
||||
|
||||
/obj/machinery/atmospherics/proc/nullifyPipenetwork()
|
||||
return
|
||||
/obj/machinery/atmospherics/proc/nullifyPipenet(datum/pipeline/P)
|
||||
P.other_atmosmch -= src
|
||||
|
||||
/obj/machinery/atmospherics/proc/getpipeimage(var/iconset, var/iconstate, var/direction, var/col=rgb(255,255,255))
|
||||
|
||||
@@ -137,6 +124,18 @@ Pipelines + Other Objects -> Pipe network
|
||||
|
||||
return img
|
||||
|
||||
/obj/machinery/atmospherics/proc/construction(D, P)
|
||||
dir = D
|
||||
initialize_directions = P
|
||||
var/turf/T = loc
|
||||
level = T.intact ? 2 : 1
|
||||
initialize()
|
||||
var/list/nodes = pipeline_expansion()
|
||||
for(var/obj/machinery/atmospherics/A in nodes)
|
||||
A.initialize()
|
||||
A.addMember(src)
|
||||
build_network()
|
||||
|
||||
/obj/machinery/atmospherics/singularity_pull(S, current_size)
|
||||
if(current_size >= STAGE_FIVE)
|
||||
Deconstruct()
|
||||
@@ -10,8 +10,8 @@
|
||||
var/obj/machinery/atmospherics/node1
|
||||
var/obj/machinery/atmospherics/node2
|
||||
|
||||
var/datum/pipe_network/network1
|
||||
var/datum/pipe_network/network2
|
||||
var/datum/pipeline/parent1
|
||||
var/datum/pipeline/parent2
|
||||
|
||||
var/showpipe = 0
|
||||
|
||||
@@ -60,33 +60,15 @@
|
||||
..(intact)
|
||||
|
||||
// Housekeeping and pipe network stuff below
|
||||
/obj/machinery/atmospherics/binary/network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference)
|
||||
if(reference == node1)
|
||||
network1 = new_network
|
||||
|
||||
else if(reference == node2)
|
||||
network2 = new_network
|
||||
|
||||
if(new_network.normal_members.Find(src))
|
||||
return 0
|
||||
|
||||
new_network.normal_members += src
|
||||
|
||||
return null
|
||||
|
||||
/obj/machinery/atmospherics/binary/Destroy()
|
||||
loc = null
|
||||
|
||||
if(node1)
|
||||
node1.disconnect(src)
|
||||
del(network1)
|
||||
node1 = null
|
||||
nullifyPipenet(parent1)
|
||||
if(node2)
|
||||
node2.disconnect(src)
|
||||
del(network2)
|
||||
|
||||
node1 = null
|
||||
node2 = null
|
||||
|
||||
node2 = null
|
||||
nullifyPipenet(parent2)
|
||||
..()
|
||||
|
||||
/obj/machinery/atmospherics/binary/initialize()
|
||||
@@ -111,58 +93,63 @@
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/atmospherics/binary/build_network()
|
||||
if(!network1 && node1)
|
||||
network1 = new /datum/pipe_network()
|
||||
network1.normal_members += src
|
||||
network1.build_network(node1, src)
|
||||
if(!parent1)
|
||||
parent1 = new /datum/pipeline()
|
||||
parent1.build_pipeline(src)
|
||||
|
||||
if(!network2 && node2)
|
||||
network2 = new /datum/pipe_network()
|
||||
network2.normal_members += src
|
||||
network2.build_network(node2, src)
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/binary/return_network(obj/machinery/atmospherics/reference)
|
||||
build_network()
|
||||
|
||||
if(reference==node1)
|
||||
return network1
|
||||
|
||||
if(reference==node2)
|
||||
return network2
|
||||
|
||||
return null
|
||||
|
||||
/obj/machinery/atmospherics/binary/reassign_network(datum/pipe_network/old_network, datum/pipe_network/new_network)
|
||||
if(network1 == old_network)
|
||||
network1 = new_network
|
||||
if(network2 == old_network)
|
||||
network2 = new_network
|
||||
|
||||
return 1
|
||||
|
||||
/obj/machinery/atmospherics/binary/return_network_air(datum/pipe_network/reference)
|
||||
var/list/results = list()
|
||||
|
||||
if(network1 == reference)
|
||||
results += air1
|
||||
if(network2 == reference)
|
||||
results += air2
|
||||
|
||||
return results
|
||||
if(!parent2)
|
||||
parent2 = new /datum/pipeline()
|
||||
parent2.build_pipeline(src)
|
||||
|
||||
/obj/machinery/atmospherics/binary/disconnect(obj/machinery/atmospherics/reference)
|
||||
if(reference==node1)
|
||||
del(network1)
|
||||
if(reference == node1)
|
||||
if(istype(node1, /obj/machinery/atmospherics/pipe))
|
||||
qdel(parent1)
|
||||
node1 = null
|
||||
else if(reference==node2)
|
||||
del(network2)
|
||||
else if(reference == node2)
|
||||
if(istype(node2, /obj/machinery/atmospherics/pipe))
|
||||
qdel(parent2)
|
||||
node2 = null
|
||||
|
||||
update_icon()
|
||||
|
||||
return null
|
||||
/obj/machinery/atmospherics/binary/nullifyPipenet(datum/pipeline/P)
|
||||
..()
|
||||
if(P == parent1)
|
||||
parent1.other_airs -= air1
|
||||
parent1 = null
|
||||
else if(P == parent2)
|
||||
parent2.other_airs -= air2
|
||||
parent2 = null
|
||||
|
||||
/obj/machinery/atmospherics/binary/nullifyPipenetwork()
|
||||
network1 = null
|
||||
network2 = null
|
||||
/obj/machinery/atmospherics/binary/returnPipenetAir(datum/pipeline/P)
|
||||
if(P == parent1)
|
||||
return air1
|
||||
else if(P == parent2)
|
||||
return air2
|
||||
|
||||
/obj/machinery/atmospherics/binary/pipeline_expansion(datum/pipeline/P)
|
||||
if(P)
|
||||
if(parent1 == P)
|
||||
return list(node1)
|
||||
else if(parent2 == P)
|
||||
return list(node2)
|
||||
else
|
||||
return list(node1, node2)
|
||||
|
||||
/obj/machinery/atmospherics/binary/setPipenet(datum/pipeline/P, obj/machinery/atmospherics/A)
|
||||
if(A == node1)
|
||||
parent1 = P
|
||||
else if(A == node2)
|
||||
parent2 = P
|
||||
|
||||
/obj/machinery/atmospherics/binary/returnPipenet(obj/machinery/atmospherics/A)
|
||||
if(A == node1)
|
||||
return parent1
|
||||
else if(A == node2)
|
||||
return parent2
|
||||
|
||||
/obj/machinery/atmospherics/binary/replacePipenet(datum/pipeline/Old, datum/pipeline/New)
|
||||
if(Old == parent1)
|
||||
parent1 = New
|
||||
else if(Old == parent2)
|
||||
parent2 = New
|
||||
@@ -41,11 +41,9 @@
|
||||
//Actually transfer the gas
|
||||
var/datum/gas_mixture/removed = air2.remove(transfer_moles)
|
||||
|
||||
if(network1)
|
||||
network1.update = 1
|
||||
parent1.update = 1
|
||||
|
||||
if(network2)
|
||||
network2.update = 1
|
||||
parent2.update = 1
|
||||
|
||||
return removed
|
||||
|
||||
|
||||
@@ -74,8 +74,7 @@
|
||||
loc.assume_air(removed)
|
||||
air_update_turf()
|
||||
|
||||
if(network1)
|
||||
network1.update = 1
|
||||
parent1.update = 1
|
||||
|
||||
else //external -> output
|
||||
var/pressure_delta = 10000
|
||||
@@ -94,8 +93,7 @@
|
||||
air2.merge(removed)
|
||||
air_update_turf()
|
||||
|
||||
if(network2)
|
||||
network2.update = 1
|
||||
parent2.update = 1
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
@@ -51,11 +51,9 @@ Passive gate is similar to the regular pump except:
|
||||
var/datum/gas_mixture/removed = air1.remove(transfer_moles)
|
||||
air2.merge(removed)
|
||||
|
||||
if(network1)
|
||||
network1.update = 1
|
||||
parent1.update = 1
|
||||
|
||||
if(network2)
|
||||
network2.update = 1
|
||||
parent2.update = 1
|
||||
|
||||
|
||||
//Radio remote control
|
||||
|
||||
@@ -58,11 +58,10 @@ Thus, the two variables affect pump operation are set in New():
|
||||
var/datum/gas_mixture/removed = air1.remove(transfer_moles)
|
||||
air2.merge(removed)
|
||||
|
||||
if(network1)
|
||||
network1.update = 1
|
||||
parent1.update = 1
|
||||
|
||||
if(network2)
|
||||
network2.update = 1
|
||||
|
||||
parent2.update = 1
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
@@ -57,11 +57,9 @@ Thus, the two variables affect pump operation are set in New():
|
||||
|
||||
air2.merge(removed)
|
||||
|
||||
if(network1)
|
||||
network1.update = 1
|
||||
parent1.update = 1
|
||||
|
||||
if(network2)
|
||||
network2.update = 1
|
||||
parent2.update = 1
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
@@ -1,42 +1,19 @@
|
||||
/*
|
||||
This should ideally have /unary/ as parent, why doesn't it? //Donkie
|
||||
*/
|
||||
/obj/machinery/atmospherics/portables_connector
|
||||
icon = 'icons/obj/atmospherics/unary_devices.dmi'
|
||||
icon_state = "connector_map" //Only for mapping purposes, so mappers can see direction
|
||||
|
||||
/obj/machinery/atmospherics/unary/portables_connector
|
||||
name = "connector port"
|
||||
desc = "For connecting portables devices related to atmospherics control."
|
||||
|
||||
dir = SOUTH
|
||||
initialize_directions = SOUTH
|
||||
|
||||
icon = 'icons/obj/atmospherics/unary_devices.dmi'
|
||||
icon_state = "connector_map" //Only for mapping purposes, so mappers can see direction
|
||||
can_unwrench = 1
|
||||
|
||||
var/obj/machinery/portable_atmospherics/connected_device
|
||||
|
||||
var/obj/machinery/atmospherics/node
|
||||
|
||||
var/datum/pipe_network/network
|
||||
|
||||
var/showpipe = 0
|
||||
var/on = 0
|
||||
use_power = 0
|
||||
level = 0
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/portables_connector/visible
|
||||
/obj/machinery/atmospherics/unary/portables_connector/visible
|
||||
level = 2
|
||||
|
||||
/obj/machinery/atmospherics/portables_connector/New()
|
||||
initialize_directions = dir
|
||||
..()
|
||||
|
||||
/obj/machinery/atmospherics/portables_connector/update_icon()
|
||||
/obj/machinery/atmospherics/unary/portables_connector/update_icon()
|
||||
icon_state = "connector"
|
||||
|
||||
underlays.Cut()
|
||||
|
||||
if(showpipe)
|
||||
var/state
|
||||
var/col
|
||||
@@ -45,114 +22,26 @@ This should ideally have /unary/ as parent, why doesn't it? //Donkie
|
||||
col = node.pipe_color
|
||||
else
|
||||
state = "pipe_exposed"
|
||||
|
||||
underlays += getpipeimage('icons/obj/atmospherics/binary_devices.dmi', state, initialize_directions, col)
|
||||
|
||||
return
|
||||
|
||||
/obj/machinery/atmospherics/portables_connector/hide(var/intact)
|
||||
showpipe = !intact
|
||||
update_icon()
|
||||
|
||||
..(intact)
|
||||
|
||||
/obj/machinery/atmospherics/portables_connector/process()
|
||||
..()
|
||||
if(!on)
|
||||
return
|
||||
/obj/machinery/atmospherics/unary/portables_connector/process()
|
||||
if(!connected_device)
|
||||
on = 0
|
||||
return
|
||||
if(network)
|
||||
network.update = 1
|
||||
return 1
|
||||
parent.update = 1
|
||||
|
||||
// Housekeeping and pipe network stuff below
|
||||
/obj/machinery/atmospherics/portables_connector/network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference)
|
||||
if(reference == node)
|
||||
network = new_network
|
||||
|
||||
if(new_network.normal_members.Find(src))
|
||||
return 0
|
||||
|
||||
new_network.normal_members += src
|
||||
|
||||
return null
|
||||
|
||||
/obj/machinery/atmospherics/portables_connector/Destroy()
|
||||
/obj/machinery/atmospherics/unary/portables_connector/Destroy()
|
||||
if(connected_device)
|
||||
connected_device.disconnect()
|
||||
|
||||
if(node)
|
||||
node.disconnect(src)
|
||||
del(network)
|
||||
|
||||
node = null
|
||||
|
||||
..()
|
||||
|
||||
/obj/machinery/atmospherics/portables_connector/initialize()
|
||||
src.disconnect(src)
|
||||
|
||||
var/node_connect = dir
|
||||
|
||||
for(var/obj/machinery/atmospherics/target in get_step(src,node_connect))
|
||||
if(target.initialize_directions & get_dir(target,src))
|
||||
node = target
|
||||
break
|
||||
//build_network() //might need this
|
||||
|
||||
if(level == 2)
|
||||
showpipe = 1
|
||||
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/atmospherics/portables_connector/build_network()
|
||||
if(!network && node)
|
||||
network = new /datum/pipe_network()
|
||||
network.normal_members += src
|
||||
network.build_network(node, src)
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/portables_connector/return_network(obj/machinery/atmospherics/reference)
|
||||
build_network()
|
||||
|
||||
if(reference==node)
|
||||
return network
|
||||
|
||||
if(reference==connected_device)
|
||||
return network
|
||||
|
||||
return null
|
||||
|
||||
/obj/machinery/atmospherics/portables_connector/reassign_network(datum/pipe_network/old_network, datum/pipe_network/new_network)
|
||||
if(network == old_network)
|
||||
network = new_network
|
||||
|
||||
return 1
|
||||
|
||||
/obj/machinery/atmospherics/portables_connector/return_network_air(datum/pipe_network/reference)
|
||||
var/list/results = list()
|
||||
|
||||
if(connected_device)
|
||||
results += connected_device.air_contents
|
||||
|
||||
return results
|
||||
|
||||
/obj/machinery/atmospherics/portables_connector/disconnect(obj/machinery/atmospherics/reference)
|
||||
if(reference==node)
|
||||
del(network)
|
||||
node = null
|
||||
|
||||
update_icon()
|
||||
|
||||
return null
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/portables_connector/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
|
||||
if (!istype(W, /obj/item/weapon/wrench))
|
||||
return ..()
|
||||
if (connected_device)
|
||||
user << "<span class='danger'>You cannot unwrench this [src], detach [connected_device] first.</span>"
|
||||
return 1
|
||||
/obj/machinery/atmospherics/unary/portables_connector/attackby(obj/item/weapon/W, mob/user)
|
||||
if(istype(W, /obj/item/weapon/wrench))
|
||||
if(connected_device)
|
||||
user << "<span class='danger'>You cannot unwrench this [src], dettach [connected_device] first.</span>"
|
||||
return 1
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/unary/portables_connector/portableConnectorReturnAir()
|
||||
return connected_device.portableConnectorReturnAir()
|
||||
|
||||
/obj/proc/portableConnectorReturnAir()
|
||||
|
||||
@@ -122,14 +122,11 @@ Filter types:
|
||||
air2.merge(filtered_out)
|
||||
air3.merge(removed)
|
||||
|
||||
if(network2)
|
||||
network2.update = 1
|
||||
parent2.update = 1
|
||||
|
||||
if(network3)
|
||||
network3.update = 1
|
||||
parent3.update = 1
|
||||
|
||||
if(network1)
|
||||
network1.update = 1
|
||||
parent1.update = 1
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
@@ -87,14 +87,13 @@
|
||||
var/datum/gas_mixture/removed2 = air2.remove(transfer_moles2)
|
||||
air3.merge(removed2)
|
||||
|
||||
if(network1 && transfer_moles1)
|
||||
network1.update = 1
|
||||
if(transfer_moles1)
|
||||
parent1.update = 1
|
||||
|
||||
if(network2 && transfer_moles2)
|
||||
network2.update = 1
|
||||
if(transfer_moles2)
|
||||
parent2.update = 1
|
||||
|
||||
if(network3)
|
||||
network3.update = 1
|
||||
parent3.update = 1
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
@@ -12,9 +12,9 @@
|
||||
var/obj/machinery/atmospherics/node2
|
||||
var/obj/machinery/atmospherics/node3
|
||||
|
||||
var/datum/pipe_network/network1
|
||||
var/datum/pipe_network/network2
|
||||
var/datum/pipe_network/network3
|
||||
var/datum/pipeline/parent1
|
||||
var/datum/pipeline/parent2
|
||||
var/datum/pipeline/parent3
|
||||
|
||||
var/flipped = 0
|
||||
|
||||
@@ -77,42 +77,22 @@ Iconnery
|
||||
/*
|
||||
Housekeeping and pipe network stuff below
|
||||
*/
|
||||
/obj/machinery/atmospherics/trinary/network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference)
|
||||
if(reference == node1)
|
||||
network1 = new_network
|
||||
|
||||
else if(reference == node2)
|
||||
network2 = new_network
|
||||
|
||||
else if (reference == node3)
|
||||
network3 = new_network
|
||||
|
||||
if(new_network.normal_members.Find(src))
|
||||
return 0
|
||||
|
||||
new_network.normal_members += src
|
||||
|
||||
return null
|
||||
|
||||
/obj/machinery/atmospherics/trinary/Destroy()
|
||||
if(node1)
|
||||
node1.disconnect(src)
|
||||
del(network1)
|
||||
node1 = null
|
||||
nullifyPipenet(parent1)
|
||||
if(node2)
|
||||
node2.disconnect(src)
|
||||
del(network2)
|
||||
node2 = null
|
||||
nullifyPipenet(parent2)
|
||||
if(node3)
|
||||
node3.disconnect(src)
|
||||
del(network3)
|
||||
|
||||
node1 = null
|
||||
node2 = null
|
||||
node3 = null
|
||||
|
||||
node3 = null
|
||||
nullifyPipenet(parent3)
|
||||
..()
|
||||
|
||||
/obj/machinery/atmospherics/trinary/initialize()
|
||||
src.disconnect(src)
|
||||
|
||||
//Mixer:
|
||||
//1 and 2 is input
|
||||
@@ -151,76 +131,83 @@ Housekeeping and pipe network stuff below
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/atmospherics/trinary/build_network()
|
||||
if(!network1 && node1)
|
||||
network1 = new /datum/pipe_network()
|
||||
network1.normal_members += src
|
||||
network1.build_network(node1, src)
|
||||
if(!parent1)
|
||||
parent1 = new /datum/pipeline()
|
||||
parent1.build_pipeline(src)
|
||||
|
||||
if(!network2 && node2)
|
||||
network2 = new /datum/pipe_network()
|
||||
network2.normal_members += src
|
||||
network2.build_network(node2, src)
|
||||
if(!parent2)
|
||||
parent2 = new /datum/pipeline()
|
||||
parent2.build_pipeline(src)
|
||||
|
||||
if(!network3 && node3)
|
||||
network3 = new /datum/pipe_network()
|
||||
network3.normal_members += src
|
||||
network3.build_network(node3, src)
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/trinary/return_network(obj/machinery/atmospherics/reference)
|
||||
build_network()
|
||||
|
||||
if(reference==node1)
|
||||
return network1
|
||||
|
||||
if(reference==node2)
|
||||
return network2
|
||||
|
||||
if(reference==node3)
|
||||
return network3
|
||||
|
||||
return null
|
||||
|
||||
/obj/machinery/atmospherics/trinary/reassign_network(datum/pipe_network/old_network, datum/pipe_network/new_network)
|
||||
if(network1 == old_network)
|
||||
network1 = new_network
|
||||
if(network2 == old_network)
|
||||
network2 = new_network
|
||||
if(network3 == old_network)
|
||||
network3 = new_network
|
||||
|
||||
return 1
|
||||
|
||||
/obj/machinery/atmospherics/trinary/return_network_air(datum/pipe_network/reference)
|
||||
var/list/results = list()
|
||||
|
||||
if(network1 == reference)
|
||||
results += air1
|
||||
if(network2 == reference)
|
||||
results += air2
|
||||
if(network3 == reference)
|
||||
results += air3
|
||||
|
||||
return results
|
||||
if(!parent3)
|
||||
parent3 = new /datum/pipeline()
|
||||
parent3.build_pipeline(src)
|
||||
|
||||
/obj/machinery/atmospherics/trinary/disconnect(obj/machinery/atmospherics/reference)
|
||||
if(reference==node1)
|
||||
del(network1)
|
||||
if(reference == node1)
|
||||
if(istype(node1, /obj/machinery/atmospherics/pipe))
|
||||
qdel(parent1)
|
||||
node1 = null
|
||||
|
||||
else if(reference==node2)
|
||||
del(network2)
|
||||
else if(reference == node2)
|
||||
if(istype(node2, /obj/machinery/atmospherics/pipe))
|
||||
qdel(parent2)
|
||||
node2 = null
|
||||
|
||||
else if(reference==node3)
|
||||
del(network3)
|
||||
else if(reference == node3)
|
||||
if(istype(node3, /obj/machinery/atmospherics/pipe))
|
||||
qdel(parent3)
|
||||
node3 = null
|
||||
|
||||
update_icon()
|
||||
|
||||
return null
|
||||
/obj/machinery/atmospherics/trinary/nullifyPipenet(datum/pipeline/P)
|
||||
..()
|
||||
if(P == parent1)
|
||||
parent1.other_airs -= air1
|
||||
parent1 = null
|
||||
else if(P == parent2)
|
||||
parent2.other_airs -= air2
|
||||
parent2 = null
|
||||
else if(P == parent3)
|
||||
parent3.other_airs -= air3
|
||||
parent3 = null
|
||||
|
||||
/obj/machinery/atmospherics/trinary/nullifyPipenetwork()
|
||||
network1 = null
|
||||
network2 = null
|
||||
network3 = null
|
||||
/obj/machinery/atmospherics/trinary/returnPipenetAir(datum/pipeline/P)
|
||||
if(P == parent1)
|
||||
return air1
|
||||
else if(P == parent2)
|
||||
return air2
|
||||
else if(P == parent3)
|
||||
return air3
|
||||
|
||||
/obj/machinery/atmospherics/trinary/pipeline_expansion(datum/pipeline/P)
|
||||
if(P)
|
||||
if(parent1 == P)
|
||||
return list(node1)
|
||||
else if(parent2 == P)
|
||||
return list(node2)
|
||||
else if(parent3 == P)
|
||||
return list(node3)
|
||||
return list(node1, node2, node3)
|
||||
|
||||
/obj/machinery/atmospherics/trinary/setPipenet(datum/pipeline/P, obj/machinery/atmospherics/A)
|
||||
if(A == node1)
|
||||
parent1 = P
|
||||
else if(A == node2)
|
||||
parent2 = P
|
||||
else if(A == node3)
|
||||
parent3 = P
|
||||
|
||||
/obj/machinery/atmospherics/trinary/returnPipenet(obj/machinery/atmospherics/A)
|
||||
if(A == node1)
|
||||
return parent1
|
||||
else if(A == node2)
|
||||
return parent2
|
||||
else if(A == node3)
|
||||
return parent3
|
||||
|
||||
/obj/machinery/atmospherics/trinary/replacePipenet(datum/pipeline/Old, datum/pipeline/New)
|
||||
if(Old == parent1)
|
||||
parent1 = New
|
||||
else if(Old == parent2)
|
||||
parent2 = New
|
||||
else if(Old == parent3)
|
||||
parent3 = New
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
/obj/machinery/atmospherics/unary/cold_sink/process()
|
||||
..()
|
||||
if(!on || !network)
|
||||
if(!on)
|
||||
return 0
|
||||
var/air_heat_capacity = air_contents.heat_capacity()
|
||||
var/combined_heat_capacity = current_heat_capacity + air_heat_capacity
|
||||
@@ -37,5 +37,5 @@
|
||||
//todo: have current temperature affected. require power to bring down current temperature again
|
||||
|
||||
if(abs(old_temperature-air_contents.temperature) > 1)
|
||||
network.update = 1
|
||||
parent.update = 1
|
||||
return 1
|
||||
|
||||
@@ -57,12 +57,10 @@
|
||||
air_contents.temperature = new_temperature
|
||||
partner.air_contents.temperature = new_temperature
|
||||
|
||||
if(network)
|
||||
if(abs(old_temperature-air_contents.temperature) > 1)
|
||||
network.update = 1
|
||||
if(abs(old_temperature-air_contents.temperature) > 1)
|
||||
parent.update = 1
|
||||
|
||||
if(partner.network)
|
||||
if(abs(other_old_temperature-partner.air_contents.temperature) > 1)
|
||||
partner.network.update = 1
|
||||
if(abs(other_old_temperature-partner.air_contents.temperature) > 1)
|
||||
partner.parent.update = 1
|
||||
|
||||
return 1
|
||||
|
||||
@@ -39,5 +39,5 @@
|
||||
//todo: have current temperature affected. require power to bring up current temperature again
|
||||
|
||||
if(abs(old_temperature-air_contents.temperature) > 1)
|
||||
network.update = 1
|
||||
parent.update = 1
|
||||
return 1
|
||||
|
||||
@@ -48,8 +48,7 @@
|
||||
loc.assume_air(removed)
|
||||
air_update_turf()
|
||||
|
||||
if(network)
|
||||
network.update = 1
|
||||
parent.update = 1
|
||||
|
||||
return 1
|
||||
|
||||
@@ -66,8 +65,7 @@
|
||||
|
||||
loc.assume_air(removed)
|
||||
|
||||
if(network)
|
||||
network.update = 1
|
||||
parent.update = 1
|
||||
|
||||
flick("inje_inject", src)
|
||||
|
||||
|
||||
@@ -43,7 +43,6 @@
|
||||
air_contents.temperature = (current_heat_capacity*air_contents.temperature + 20*added_oxygen*T0C)/(current_heat_capacity+20*added_oxygen)
|
||||
air_contents.oxygen += added_oxygen
|
||||
|
||||
if(network)
|
||||
network.update = 1
|
||||
parent.update = 1
|
||||
|
||||
return 1
|
||||
|
||||
@@ -1,28 +1,23 @@
|
||||
/obj/machinery/atmospherics/unary
|
||||
icon = 'icons/obj/atmospherics/unary_devices.dmi'
|
||||
|
||||
dir = SOUTH
|
||||
initialize_directions = SOUTH
|
||||
layer = TURF_LAYER+0.1
|
||||
|
||||
var/datum/gas_mixture/air_contents
|
||||
|
||||
var/obj/machinery/atmospherics/node
|
||||
|
||||
var/datum/pipe_network/network
|
||||
|
||||
var/datum/pipeline/parent
|
||||
var/showpipe = 0
|
||||
|
||||
/obj/machinery/atmospherics/unary/New()
|
||||
..()
|
||||
initialize_directions = dir
|
||||
air_contents = new
|
||||
|
||||
air_contents.volume = 200
|
||||
|
||||
/*
|
||||
Iconnery
|
||||
*/
|
||||
|
||||
//Separate this because we don't need to update pipe icons if we just are going to change the state
|
||||
/obj/machinery/atmospherics/unary/proc/update_icon_nopipes()
|
||||
return
|
||||
@@ -54,91 +49,67 @@ Iconnery
|
||||
/*
|
||||
Housekeeping and pipe network stuff below
|
||||
*/
|
||||
/obj/machinery/atmospherics/unary/network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference)
|
||||
if(reference == node)
|
||||
network = new_network
|
||||
|
||||
if(new_network.normal_members.Find(src))
|
||||
return 0
|
||||
|
||||
new_network.normal_members += src
|
||||
|
||||
return null
|
||||
|
||||
/obj/machinery/atmospherics/unary/Destroy()
|
||||
if(node)
|
||||
node.disconnect(src)
|
||||
del(network)
|
||||
|
||||
node = null
|
||||
|
||||
node = null
|
||||
nullifyPipenet(parent)
|
||||
..()
|
||||
|
||||
/obj/machinery/atmospherics/unary/initialize(infiniteloop = 0)
|
||||
if(!infiniteloop)
|
||||
src.disconnect(src)
|
||||
|
||||
var/node_connect = dir
|
||||
|
||||
for(var/obj/machinery/atmospherics/target in get_step(src,node_connect))
|
||||
/obj/machinery/atmospherics/unary/initialize()
|
||||
for(var/obj/machinery/atmospherics/target in get_step(src, dir))
|
||||
if(target.initialize_directions & get_dir(target,src))
|
||||
node = target
|
||||
if(!infiniteloop)
|
||||
target.initialize(1)
|
||||
break
|
||||
//build_network() might need this
|
||||
|
||||
if(level == 2)
|
||||
showpipe = 1
|
||||
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/atmospherics/unary/default_change_direction_wrench(mob/user, obj/item/weapon/wrench/W)
|
||||
if(..())
|
||||
initialize_directions = dir
|
||||
if(node)
|
||||
disconnect(node)
|
||||
node.disconnect(src)
|
||||
node = null
|
||||
nullifyPipenet(parent)
|
||||
initialize()
|
||||
if(node)
|
||||
node.initialize()
|
||||
node.addMember(src)
|
||||
build_network()
|
||||
. = 1
|
||||
|
||||
/obj/machinery/atmospherics/unary/build_network()
|
||||
if(!network && node)
|
||||
network = new /datum/pipe_network()
|
||||
network.normal_members += src
|
||||
network.build_network(node, src)
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/unary/return_network(obj/machinery/atmospherics/reference)
|
||||
build_network()
|
||||
|
||||
if(reference==node)
|
||||
return network
|
||||
|
||||
return null
|
||||
|
||||
/obj/machinery/atmospherics/unary/reassign_network(datum/pipe_network/old_network, datum/pipe_network/new_network)
|
||||
if(network == old_network)
|
||||
network = new_network
|
||||
|
||||
return 1
|
||||
|
||||
/obj/machinery/atmospherics/unary/return_network_air(datum/pipe_network/reference)
|
||||
var/list/results = list()
|
||||
|
||||
if(network == reference)
|
||||
results += air_contents
|
||||
|
||||
return results
|
||||
if(!parent)
|
||||
parent = new /datum/pipeline()
|
||||
parent.build_pipeline(src)
|
||||
|
||||
/obj/machinery/atmospherics/unary/disconnect(obj/machinery/atmospherics/reference)
|
||||
if(reference==node)
|
||||
if(reference == node)
|
||||
if(istype(node, /obj/machinery/atmospherics/pipe))
|
||||
qdel(parent)
|
||||
node = null
|
||||
reference.disconnect(src)
|
||||
del(network)
|
||||
|
||||
update_icon()
|
||||
|
||||
return null
|
||||
/obj/machinery/atmospherics/unary/nullifyPipenet()
|
||||
..()
|
||||
parent.other_airs -= air_contents
|
||||
parent = null
|
||||
|
||||
/obj/machinery/atmospherics/unary/nullifyPipenetwork()
|
||||
network = null
|
||||
/obj/machinery/atmospherics/unary/returnPipenetAir()
|
||||
return air_contents
|
||||
|
||||
/obj/machinery/atmospherics/unary/pipeline_expansion()
|
||||
return list(node)
|
||||
|
||||
/obj/machinery/atmospherics/unary/setPipenet(datum/pipeline/P)
|
||||
parent = P
|
||||
|
||||
/obj/machinery/atmospherics/unary/returnPipenet()
|
||||
return parent
|
||||
|
||||
/obj/machinery/atmospherics/unary/replacePipenet(datum/pipeline/Old, datum/pipeline/New)
|
||||
if(Old == parent)
|
||||
parent = New
|
||||
@@ -114,8 +114,7 @@
|
||||
loc.assume_air(removed)
|
||||
air_update_turf()
|
||||
|
||||
if(network)
|
||||
network.update = 1
|
||||
parent.update = 1
|
||||
|
||||
else //external -> internal
|
||||
var/pressure_delta = 10000
|
||||
@@ -135,8 +134,7 @@
|
||||
air_contents.merge(removed)
|
||||
air_update_turf()
|
||||
|
||||
if(network)
|
||||
network.update = 1
|
||||
parent.update = 1
|
||||
|
||||
return 1
|
||||
|
||||
@@ -320,12 +318,8 @@
|
||||
L << "That vent is welded shut."
|
||||
return
|
||||
|
||||
if(!network || !network.normal_members.len)
|
||||
L << "This vent is not connected to anything."
|
||||
return
|
||||
|
||||
var/list/vents = list()
|
||||
for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in network.normal_members)
|
||||
for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in parent.other_atmosmch)
|
||||
if(temp_vent.welded)
|
||||
continue
|
||||
if(temp_vent in loc)
|
||||
@@ -359,7 +353,7 @@
|
||||
var/obj/machinery/atmospherics/unary/vent_pump/target_vent = vents[selection]
|
||||
if(!target_vent)
|
||||
return
|
||||
|
||||
|
||||
for(var/mob/O in viewers(L, null))
|
||||
O.show_message(text("<B>[L] scrambles into the ventilation ducts!</B>"), 1)
|
||||
|
||||
|
||||
@@ -143,8 +143,7 @@
|
||||
loc.assume_air(removed)
|
||||
air_update_turf()
|
||||
|
||||
if(network)
|
||||
network.update = 1
|
||||
parent.update = 1
|
||||
|
||||
else //Just siphoning all air
|
||||
if (air_contents.return_pressure()>=50*ONE_ATMOSPHERE)
|
||||
@@ -157,8 +156,7 @@
|
||||
air_contents.merge(removed)
|
||||
air_update_turf()
|
||||
|
||||
if(network)
|
||||
network.update = 1
|
||||
parent.update = 1
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
@@ -1,355 +1,85 @@
|
||||
|
||||
/*
|
||||
This file contains:
|
||||
Manual Valve
|
||||
Digital Valve
|
||||
|
||||
These pipes are not under the binary_atmos base because instead of doing pretty maths, they simply
|
||||
connect the networks together for a more efficient transfer
|
||||
*/
|
||||
|
||||
/obj/machinery/atmospherics/valve
|
||||
/obj/machinery/atmospherics/binary/valve
|
||||
icon = 'icons/obj/atmospherics/binary_devices.dmi'
|
||||
icon_state = "mvalve_map"
|
||||
|
||||
name = "manual valve"
|
||||
desc = "A pipe valve"
|
||||
|
||||
dir = SOUTH
|
||||
initialize_directions = SOUTH|NORTH
|
||||
|
||||
can_unwrench = 1
|
||||
|
||||
var/open = 0
|
||||
var/openDuringInit //useless, must remove
|
||||
|
||||
var/obj/machinery/atmospherics/node1
|
||||
var/obj/machinery/atmospherics/node2
|
||||
|
||||
var/datum/pipe_network/network_node1
|
||||
var/datum/pipe_network/network_node2
|
||||
var/frequency = 0
|
||||
var/id = null
|
||||
var/datum/radio_frequency/radio_connection
|
||||
|
||||
/obj/machinery/atmospherics/valve/open
|
||||
/obj/machinery/atmospherics/binary/valve/open
|
||||
open = 1
|
||||
|
||||
//Separate this because we don't need to update pipe icons if we just are going to crank the handle
|
||||
/obj/machinery/atmospherics/valve/proc/update_icon_nopipes(var/animation = 0)
|
||||
/obj/machinery/atmospherics/binary/valve/update_icon_nopipes(animation = 0)
|
||||
normalize_dir()
|
||||
icon_state = "mvalve_off"
|
||||
|
||||
overlays.Cut()
|
||||
if(animation)
|
||||
overlays += getpipeimage('icons/obj/atmospherics/binary_devices.dmi', "mvalve_[open][!open]")
|
||||
else if(open)
|
||||
overlays += getpipeimage('icons/obj/atmospherics/binary_devices.dmi', "mvalve_on")
|
||||
|
||||
/obj/machinery/atmospherics/valve/update_icon()
|
||||
/obj/machinery/atmospherics/binary/valve/update_icon()
|
||||
update_icon_nopipes()
|
||||
|
||||
var/connected = 0
|
||||
underlays.Cut()
|
||||
|
||||
//Add non-broken pieces
|
||||
if(node1)
|
||||
connected = icon_addintact(node1, connected)
|
||||
|
||||
if(node2)
|
||||
connected = icon_addintact(node2, connected)
|
||||
|
||||
//Add broken pieces
|
||||
icon_addbroken(connected)
|
||||
|
||||
/obj/machinery/atmospherics/valve/New()
|
||||
..()
|
||||
switch(dir)
|
||||
if(NORTH || SOUTH)
|
||||
initialize_directions = NORTH|SOUTH
|
||||
if(EAST || WEST)
|
||||
initialize_directions = EAST|WEST
|
||||
|
||||
/obj/machinery/atmospherics/valve/network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference)
|
||||
if(reference == node1)
|
||||
network_node1 = new_network
|
||||
if(open)
|
||||
network_node2 = new_network
|
||||
else if(reference == node2)
|
||||
network_node2 = new_network
|
||||
if(open)
|
||||
network_node1 = new_network
|
||||
|
||||
if(new_network.normal_members.Find(src))
|
||||
return 0
|
||||
|
||||
new_network.normal_members += src
|
||||
|
||||
if(open)
|
||||
if(reference == node1)
|
||||
if(node2)
|
||||
return node2.network_expand(new_network, src)
|
||||
else if(reference == node2)
|
||||
if(node1)
|
||||
return node1.network_expand(new_network, src)
|
||||
|
||||
return null
|
||||
|
||||
/obj/machinery/atmospherics/valve/Destroy()
|
||||
if(node1)
|
||||
node1.disconnect(src)
|
||||
del(network_node1)
|
||||
if(node2)
|
||||
node2.disconnect(src)
|
||||
del(network_node2)
|
||||
|
||||
node1 = null
|
||||
node2 = null
|
||||
|
||||
..()
|
||||
|
||||
/obj/machinery/atmospherics/valve/proc/open()
|
||||
if(open)
|
||||
return 0
|
||||
|
||||
/obj/machinery/atmospherics/binary/valve/proc/open()
|
||||
open = 1
|
||||
update_icon_nopipes()
|
||||
|
||||
if(network_node1&&network_node2)
|
||||
network_node1.merge(network_node2)
|
||||
network_node2 = network_node1
|
||||
|
||||
if(network_node1)
|
||||
network_node1.update = 1
|
||||
else if(network_node2)
|
||||
network_node2.update = 1
|
||||
|
||||
return 1
|
||||
|
||||
/obj/machinery/atmospherics/valve/proc/close()
|
||||
if(!open)
|
||||
return 0
|
||||
parent1.update = 0
|
||||
parent2.update = 0
|
||||
return
|
||||
|
||||
/obj/machinery/atmospherics/binary/valve/proc/close()
|
||||
open = 0
|
||||
update_icon_nopipes()
|
||||
return
|
||||
|
||||
if(network_node1)
|
||||
del(network_node1)
|
||||
if(network_node2)
|
||||
del(network_node2)
|
||||
|
||||
build_network()
|
||||
|
||||
return 1
|
||||
|
||||
/obj/machinery/atmospherics/valve/proc/normalize_dir()
|
||||
/obj/machinery/atmospherics/binary/valve/proc/normalize_dir()
|
||||
if(dir==3)
|
||||
dir = 1
|
||||
else if(dir==12)
|
||||
dir = 4
|
||||
|
||||
/obj/machinery/atmospherics/valve/attack_ai(mob/user as mob)
|
||||
/obj/machinery/atmospherics/binary/valve/attack_ai(mob/user)
|
||||
return
|
||||
|
||||
/obj/machinery/atmospherics/valve/attack_paw(mob/user as mob)
|
||||
return attack_hand(user)
|
||||
|
||||
obj/machinery/atmospherics/valve/attack_hand(mob/user as mob)
|
||||
src.add_fingerprint(usr)
|
||||
/obj/machinery/atmospherics/binary/valve/attack_hand(mob/user)
|
||||
add_fingerprint(usr)
|
||||
update_icon_nopipes(1)
|
||||
sleep(10)
|
||||
if (src.open)
|
||||
src.close()
|
||||
else
|
||||
src.open()
|
||||
|
||||
/obj/machinery/atmospherics/valve/process()
|
||||
..()
|
||||
. = PROCESS_KILL
|
||||
|
||||
/* if(open && (!node1 || !node2))
|
||||
if(open)
|
||||
close()
|
||||
if(!node1)
|
||||
if(!nodealert)
|
||||
//world << "Missing node from [src] at [src.x],[src.y],[src.z]"
|
||||
nodealert = 1
|
||||
else if (!node2)
|
||||
if(!nodealert)
|
||||
//world << "Missing node from [src] at [src.x],[src.y],[src.z]"
|
||||
nodealert = 1
|
||||
else if (nodealert)
|
||||
nodealert = 0
|
||||
*/
|
||||
else
|
||||
open()
|
||||
parent1.reconcile_air()
|
||||
|
||||
return
|
||||
|
||||
/obj/machinery/atmospherics/valve/initialize()
|
||||
normalize_dir()
|
||||
|
||||
var/node1_dir
|
||||
var/node2_dir
|
||||
|
||||
for(var/direction in cardinal)
|
||||
if(direction&initialize_directions)
|
||||
if (!node1_dir)
|
||||
node1_dir = direction
|
||||
else if (!node2_dir)
|
||||
node2_dir = direction
|
||||
|
||||
for(var/obj/machinery/atmospherics/target in get_step(src,node1_dir))
|
||||
if(target.initialize_directions & get_dir(target,src))
|
||||
node1 = target
|
||||
break
|
||||
for(var/obj/machinery/atmospherics/target in get_step(src,node2_dir))
|
||||
if(target.initialize_directions & get_dir(target,src))
|
||||
node2 = target
|
||||
break
|
||||
|
||||
//build_network()
|
||||
update_icon()
|
||||
|
||||
/*
|
||||
var/connect_directions
|
||||
switch(dir)
|
||||
if(NORTH)
|
||||
connect_directions = NORTH|SOUTH
|
||||
if(SOUTH)
|
||||
connect_directions = NORTH|SOUTH
|
||||
if(EAST)
|
||||
connect_directions = EAST|WEST
|
||||
if(WEST)
|
||||
connect_directions = EAST|WEST
|
||||
else
|
||||
connect_directions = dir
|
||||
|
||||
for(var/direction in cardinal)
|
||||
if(direction&connect_directions)
|
||||
for(var/obj/machinery/atmospherics/target in get_step(src,direction))
|
||||
if(target.initialize_directions & get_dir(target,src))
|
||||
connect_directions &= ~direction
|
||||
node1 = target
|
||||
break
|
||||
if(node1)
|
||||
break
|
||||
|
||||
for(var/direction in cardinal)
|
||||
if(direction&connect_directions)
|
||||
for(var/obj/machinery/atmospherics/target in get_step(src,direction))
|
||||
if(target.initialize_directions & get_dir(target,src))
|
||||
node2 = target
|
||||
break
|
||||
if(node1)
|
||||
break
|
||||
*/
|
||||
/obj/machinery/atmospherics/valve/build_network()
|
||||
if(!network_node1 && node1)
|
||||
network_node1 = new /datum/pipe_network()
|
||||
network_node1.normal_members += src
|
||||
network_node1.build_network(node1, src)
|
||||
|
||||
if(!network_node2 && node2)
|
||||
network_node2 = new /datum/pipe_network()
|
||||
network_node2.normal_members += src
|
||||
network_node2.build_network(node2, src)
|
||||
|
||||
|
||||
/obj/machinery/atmospherics/valve/return_network(obj/machinery/atmospherics/reference)
|
||||
build_network()
|
||||
|
||||
if(reference==node1)
|
||||
return network_node1
|
||||
|
||||
if(reference==node2)
|
||||
return network_node2
|
||||
|
||||
return null
|
||||
|
||||
/obj/machinery/atmospherics/valve/reassign_network(datum/pipe_network/old_network, datum/pipe_network/new_network)
|
||||
if(network_node1 == old_network)
|
||||
network_node1 = new_network
|
||||
if(network_node2 == old_network)
|
||||
network_node2 = new_network
|
||||
|
||||
return 1
|
||||
|
||||
/obj/machinery/atmospherics/valve/return_network_air(datum/network/reference)
|
||||
return null
|
||||
|
||||
/obj/machinery/atmospherics/valve/disconnect(obj/machinery/atmospherics/reference)
|
||||
if(reference==node1)
|
||||
del(network_node1)
|
||||
node1 = null
|
||||
|
||||
else if(reference==node2)
|
||||
del(network_node2)
|
||||
node2 = null
|
||||
|
||||
update_icon()
|
||||
|
||||
return null
|
||||
|
||||
/obj/machinery/atmospherics/valve/digital // can be controlled by AI
|
||||
/obj/machinery/atmospherics/binary/valve/digital // can be controlled by AI
|
||||
name = "digital valve"
|
||||
desc = "A digitally controlled valve."
|
||||
icon_state = "dvalve_map"
|
||||
|
||||
/obj/machinery/atmospherics/valve/digital/attack_ai(mob/user as mob)
|
||||
/obj/machinery/atmospherics/valve/digital/attack_ai(mob/user)
|
||||
return src.attack_hand(user)
|
||||
|
||||
/obj/machinery/atmospherics/valve/digital/attack_hand(mob/user as mob)
|
||||
if(!src.allowed(user))
|
||||
user << "<span class='danger'>Access denied.</span>"
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/machinery/atmospherics/valve/digital/update_icon_nopipes(var/animation)
|
||||
/obj/machinery/atmospherics/binary/valve/digital/update_icon_nopipes(animation)
|
||||
normalize_dir()
|
||||
|
||||
if(stat & NOPOWER)
|
||||
icon_state = "dvalve_nopower"
|
||||
overlays.Cut()
|
||||
return
|
||||
|
||||
icon_state = "dvalve_off"
|
||||
|
||||
overlays.Cut()
|
||||
if(animation)
|
||||
overlays += getpipeimage('icons/obj/atmospherics/binary_devices.dmi', "dvalve_[open][!open]")
|
||||
else if(open)
|
||||
overlays += getpipeimage('icons/obj/atmospherics/binary_devices.dmi', "dvalve_on")
|
||||
|
||||
//Radio remote control
|
||||
|
||||
/obj/machinery/atmospherics/valve/digital/proc/set_frequency(new_frequency)
|
||||
radio_controller.remove_object(src, frequency)
|
||||
frequency = new_frequency
|
||||
if(frequency)
|
||||
radio_connection = radio_controller.add_object(src, frequency, RADIO_ATMOSIA)
|
||||
|
||||
/obj/machinery/atmospherics/valve/digital/initialize()
|
||||
..()
|
||||
if(frequency)
|
||||
set_frequency(frequency)
|
||||
|
||||
/obj/machinery/atmospherics/valve/digital/receive_signal(datum/signal/signal)
|
||||
if(!signal.data["tag"] || (signal.data["tag"] != id))
|
||||
return 0
|
||||
|
||||
switch(signal.data["command"])
|
||||
if("valve_open")
|
||||
if(!open)
|
||||
open()
|
||||
|
||||
if("valve_close")
|
||||
if(open)
|
||||
close()
|
||||
|
||||
if("valve_toggle")
|
||||
if(open)
|
||||
close()
|
||||
else
|
||||
open()
|
||||
|
||||
/obj/machinery/atmospherics/valve/nullifyPipenetwork()
|
||||
network_node1 = null
|
||||
network_node2 = null
|
||||
@@ -1,208 +0,0 @@
|
||||
var/global/list/datum/pipe_network/pipe_networks = list()
|
||||
|
||||
/datum/pipe_network
|
||||
var/list/datum/gas_mixture/gases = list() //All of the gas_mixtures continuously connected in this network
|
||||
|
||||
var/list/obj/machinery/atmospherics/normal_members = list()
|
||||
var/list/datum/pipeline/line_members = list()
|
||||
//membership roster to go through for updates and what not
|
||||
|
||||
var/update = 1
|
||||
var/datum/gas_mixture/air_transient = null
|
||||
|
||||
/datum/pipe_network/New()
|
||||
air_transient = new()
|
||||
..()
|
||||
|
||||
/datum/pipe_network/Destroy()
|
||||
pipe_networks -= src
|
||||
for(var/datum/pipeline/P in line_members)
|
||||
P.network = null
|
||||
for(var/obj/machinery/atmospherics/A in normal_members)
|
||||
A.nullifyPipenetwork()
|
||||
..()
|
||||
|
||||
/datum/pipe_network/proc/process()
|
||||
//Equalize gases amongst pipe if called for
|
||||
if(update)
|
||||
update = 0
|
||||
reconcile_air() //equalize_gases(gases)
|
||||
|
||||
//Give pipelines their process call for pressure checking and what not. Have to remove pressure checks for the time being as pipes dont radiate heat - Mport
|
||||
//for(var/datum/pipeline/line_member in line_members)
|
||||
// line_member.process()
|
||||
|
||||
/datum/pipe_network/proc/build_network(obj/machinery/atmospherics/start_normal, obj/machinery/atmospherics/reference)
|
||||
//Purpose: Generate membership roster
|
||||
//Notes: Assuming that members will add themselves to appropriate roster in network_expand()
|
||||
|
||||
if(!start_normal)
|
||||
qdel(src)
|
||||
|
||||
start_normal.network_expand(src, reference)
|
||||
|
||||
update_network_gases()
|
||||
|
||||
if((normal_members.len>0)||(line_members.len>0))
|
||||
pipe_networks += src
|
||||
else
|
||||
qdel(src)
|
||||
|
||||
/datum/pipe_network/proc/merge(datum/pipe_network/giver)
|
||||
if(giver==src) return 0
|
||||
|
||||
normal_members -= giver.normal_members
|
||||
normal_members += giver.normal_members
|
||||
|
||||
line_members -= giver.line_members
|
||||
line_members += giver.line_members
|
||||
|
||||
for(var/obj/machinery/atmospherics/normal_member in giver.normal_members)
|
||||
normal_member.reassign_network(giver, src)
|
||||
|
||||
for(var/datum/pipeline/line_member in giver.line_members)
|
||||
line_member.network = src
|
||||
|
||||
update_network_gases()
|
||||
return 1
|
||||
|
||||
/datum/pipe_network/proc/update_network_gases()
|
||||
//Go through membership roster and make sure gases is up to date
|
||||
|
||||
gases = list()
|
||||
|
||||
for(var/obj/machinery/atmospherics/normal_member in normal_members)
|
||||
var/result = normal_member.return_network_air(src)
|
||||
if(result) gases += result
|
||||
|
||||
for(var/datum/pipeline/line_member in line_members)
|
||||
gases += line_member.air
|
||||
|
||||
/datum/pipe_network/proc/reconcile_air()
|
||||
//Perfectly equalize all gases members instantly
|
||||
|
||||
//Calculate totals from individual components
|
||||
var/total_thermal_energy = 0
|
||||
var/total_heat_capacity = 0
|
||||
|
||||
air_transient.volume = 0
|
||||
|
||||
air_transient.oxygen = 0
|
||||
air_transient.nitrogen = 0
|
||||
air_transient.toxins = 0
|
||||
air_transient.carbon_dioxide = 0
|
||||
|
||||
|
||||
air_transient.trace_gases = list()
|
||||
|
||||
for(var/datum/gas_mixture/gas in gases)
|
||||
air_transient.volume += gas.volume
|
||||
total_thermal_energy += gas.thermal_energy()
|
||||
total_heat_capacity += gas.heat_capacity()
|
||||
|
||||
air_transient.oxygen += gas.oxygen
|
||||
air_transient.nitrogen += gas.nitrogen
|
||||
air_transient.toxins += gas.toxins
|
||||
air_transient.carbon_dioxide += gas.carbon_dioxide
|
||||
|
||||
if(gas.trace_gases.len)
|
||||
for(var/datum/gas/trace_gas in gas.trace_gases)
|
||||
var/datum/gas/corresponding = locate(trace_gas.type) in air_transient.trace_gases
|
||||
if(!corresponding)
|
||||
corresponding = new trace_gas.type()
|
||||
air_transient.trace_gases += corresponding
|
||||
|
||||
corresponding.moles += trace_gas.moles
|
||||
|
||||
if(air_transient.volume > 0)
|
||||
|
||||
if(total_heat_capacity > 0)
|
||||
air_transient.temperature = total_thermal_energy/total_heat_capacity
|
||||
|
||||
//Allow air mixture to react
|
||||
if(air_transient.react())
|
||||
update = 1
|
||||
|
||||
else
|
||||
air_transient.temperature = 0
|
||||
|
||||
//Update individual gas_mixtures by volume ratio
|
||||
for(var/datum/gas_mixture/gas in gases)
|
||||
gas.oxygen = air_transient.oxygen*gas.volume/air_transient.volume
|
||||
gas.nitrogen = air_transient.nitrogen*gas.volume/air_transient.volume
|
||||
gas.toxins = air_transient.toxins*gas.volume/air_transient.volume
|
||||
gas.carbon_dioxide = air_transient.carbon_dioxide*gas.volume/air_transient.volume
|
||||
|
||||
gas.temperature = air_transient.temperature
|
||||
|
||||
if(air_transient.trace_gases.len)
|
||||
for(var/datum/gas/trace_gas in air_transient.trace_gases)
|
||||
var/datum/gas/corresponding = locate(trace_gas.type) in gas.trace_gases
|
||||
if(!corresponding)
|
||||
corresponding = new trace_gas.type()
|
||||
gas.trace_gases += corresponding
|
||||
|
||||
corresponding.moles = trace_gas.moles*gas.volume/air_transient.volume
|
||||
return 1
|
||||
|
||||
proc/equalize_gases(datum/gas_mixture/list/gases)
|
||||
//Perfectly equalize all gases members instantly
|
||||
|
||||
//Calculate totals from individual components
|
||||
var/total_volume = 0
|
||||
var/total_thermal_energy = 0
|
||||
var/total_heat_capacity = 0
|
||||
|
||||
var/total_oxygen = 0
|
||||
var/total_nitrogen = 0
|
||||
var/total_toxins = 0
|
||||
var/total_carbon_dioxide = 0
|
||||
|
||||
var/list/total_trace_gases = list()
|
||||
|
||||
for(var/datum/gas_mixture/gas in gases)
|
||||
total_volume += gas.volume
|
||||
total_thermal_energy += gas.thermal_energy()
|
||||
total_heat_capacity += gas.heat_capacity()
|
||||
|
||||
total_oxygen += gas.oxygen
|
||||
total_nitrogen += gas.nitrogen
|
||||
total_toxins += gas.toxins
|
||||
total_carbon_dioxide += gas.carbon_dioxide
|
||||
|
||||
if(gas.trace_gases.len)
|
||||
for(var/datum/gas/trace_gas in gas.trace_gases)
|
||||
var/datum/gas/corresponding = locate(trace_gas.type) in total_trace_gases
|
||||
if(!corresponding)
|
||||
corresponding = new trace_gas.type()
|
||||
total_trace_gases += corresponding
|
||||
|
||||
corresponding.moles += trace_gas.moles
|
||||
|
||||
if(total_volume > 0)
|
||||
|
||||
//Calculate temperature
|
||||
var/temperature = 0
|
||||
|
||||
if(total_heat_capacity > 0)
|
||||
temperature = total_thermal_energy/total_heat_capacity
|
||||
|
||||
//Update individual gas_mixtures by volume ratio
|
||||
for(var/datum/gas_mixture/gas in gases)
|
||||
gas.oxygen = total_oxygen*gas.volume/total_volume
|
||||
gas.nitrogen = total_nitrogen*gas.volume/total_volume
|
||||
gas.toxins = total_toxins*gas.volume/total_volume
|
||||
gas.carbon_dioxide = total_carbon_dioxide*gas.volume/total_volume
|
||||
|
||||
gas.temperature = temperature
|
||||
|
||||
if(total_trace_gases.len)
|
||||
for(var/datum/gas/trace_gas in total_trace_gases)
|
||||
var/datum/gas/corresponding = locate(trace_gas.type) in gas.trace_gases
|
||||
if(!corresponding)
|
||||
corresponding = new trace_gas.type()
|
||||
gas.trace_gases += corresponding
|
||||
|
||||
corresponding.moles = trace_gas.moles*gas.volume/total_volume
|
||||
|
||||
return 1
|
||||
+338
-150
@@ -1,24 +1,145 @@
|
||||
var/global/list/datum/pipeline/pipe_networks = list()
|
||||
|
||||
/datum/pipeline
|
||||
var/datum/gas_mixture/air
|
||||
var/list/datum/gas_mixture/other_airs = list()
|
||||
|
||||
var/list/obj/machinery/atmospherics/pipe/members
|
||||
var/list/obj/machinery/atmospherics/pipe/edges //Used for building networks
|
||||
var/list/obj/machinery/atmospherics/pipe/members = list()
|
||||
var/list/obj/machinery/atmospherics/other_atmosmch = list()
|
||||
|
||||
var/datum/pipe_network/network
|
||||
var/update = 1
|
||||
|
||||
var/alert_pressure = 0
|
||||
|
||||
/datum/pipeline/proc/process()//This use to be called called from the pipe networks
|
||||
/datum/pipeline/New()
|
||||
pipe_networks += src
|
||||
|
||||
/datum/pipeline/Destroy()
|
||||
pipe_networks -= src
|
||||
if(air && air.volume)
|
||||
temporarily_store_air()
|
||||
for(var/obj/machinery/atmospherics/pipe/P in members)
|
||||
P.parent = null
|
||||
for(var/obj/machinery/atmospherics/A in other_atmosmch)
|
||||
A.nullifyPipenet(src)
|
||||
..()
|
||||
|
||||
/datum/pipeline/proc/process()//This use to be called called from the pipe networks
|
||||
if(update)
|
||||
update = 0
|
||||
reconcile_air()
|
||||
return
|
||||
/*
|
||||
//Check to see if pressure is within acceptable limits
|
||||
var/pressure = air.return_pressure()
|
||||
if(pressure > alert_pressure)
|
||||
for(var/obj/machinery/atmospherics/pipe/member in members)
|
||||
if(!member.check_pressure(pressure))
|
||||
break //Only delete 1 pipe per process
|
||||
|
||||
//Allow for reactions
|
||||
//air.react() //Should be handled by pipe_network now
|
||||
*/
|
||||
|
||||
|
||||
var/pipenetwarnings = 10
|
||||
|
||||
/datum/pipeline/proc/build_pipeline(obj/machinery/atmospherics/base)
|
||||
base.setPipenet(src)
|
||||
var/volume = 0
|
||||
if(istype(base, /obj/machinery/atmospherics/pipe))
|
||||
var/obj/machinery/atmospherics/pipe/E = base
|
||||
volume = E.volume
|
||||
alert_pressure = E.alert_pressure
|
||||
members += E
|
||||
if(E.air_temporary)
|
||||
air = E.air_temporary
|
||||
E.air_temporary = null
|
||||
else
|
||||
addMachineryMember(base)
|
||||
if(!air)
|
||||
air = new
|
||||
var/list/possible_expansions = list(base)
|
||||
while(possible_expansions.len>0)
|
||||
for(var/obj/machinery/atmospherics/borderline in possible_expansions)
|
||||
|
||||
var/list/result = borderline.pipeline_expansion(src)
|
||||
|
||||
if(result.len>0)
|
||||
for(var/obj/machinery/atmospherics/P in result)
|
||||
if(istype(P, /obj/machinery/atmospherics/pipe))
|
||||
var/obj/machinery/atmospherics/pipe/item = P
|
||||
if(!members.Find(item))
|
||||
|
||||
if(item.parent)
|
||||
if(pipenetwarnings > 0)
|
||||
error("[item.type] added to a pipenet while still having one. ([item.x], [item.y], [item.z])")
|
||||
pipenetwarnings -= 1
|
||||
if(pipenetwarnings == 0)
|
||||
error("further messages about pipenets will be supressed")
|
||||
members += item
|
||||
possible_expansions += item
|
||||
|
||||
volume += item.volume
|
||||
item.parent = src
|
||||
|
||||
alert_pressure = min(alert_pressure, item.alert_pressure)
|
||||
|
||||
if(item.air_temporary)
|
||||
air.merge(item.air_temporary)
|
||||
item.air_temporary = null
|
||||
else
|
||||
P.setPipenet(src, borderline)
|
||||
addMachineryMember(P)
|
||||
|
||||
possible_expansions -= borderline
|
||||
|
||||
air.volume = volume
|
||||
|
||||
/datum/pipeline/proc/addMachineryMember(obj/machinery/atmospherics/A)
|
||||
other_atmosmch |= A
|
||||
var/datum/gas_mixture/G = A.returnPipenetAir(src)
|
||||
other_airs |= G
|
||||
|
||||
/datum/pipeline/proc/addMember(obj/machinery/atmospherics/A, obj/machinery/atmospherics/N)
|
||||
if(istype(A, /obj/machinery/atmospherics/pipe))
|
||||
var/obj/machinery/atmospherics/pipe/P = A
|
||||
P.parent = src
|
||||
var/list/adjacent = P.pipeline_expansion()
|
||||
for(var/obj/machinery/atmospherics/pipe/I in adjacent)
|
||||
if(I.parent == src)
|
||||
continue
|
||||
var/datum/pipeline/E = I.parent
|
||||
merge(E)
|
||||
if(!members.Find(P))
|
||||
members += P
|
||||
air.volume += P.volume
|
||||
else
|
||||
A.setPipenet(src, N)
|
||||
addMachineryMember(A)
|
||||
|
||||
/datum/pipeline/proc/merge(datum/pipeline/E)
|
||||
air.volume += E.air.volume
|
||||
members.Add(E.members)
|
||||
for(var/obj/machinery/atmospherics/pipe/S in E.members)
|
||||
S.parent = src
|
||||
air.merge(E.air)
|
||||
for(var/obj/machinery/atmospherics/A in E.other_atmosmch)
|
||||
A.replacePipenet(E, src)
|
||||
other_atmosmch.Add(E.other_atmosmch)
|
||||
other_airs.Add(E.other_airs)
|
||||
E.members.Cut()
|
||||
E.other_atmosmch.Cut()
|
||||
qdel(E)
|
||||
|
||||
/obj/machinery/atmospherics/proc/addMember(obj/machinery/atmospherics/A)
|
||||
return
|
||||
|
||||
/obj/machinery/atmospherics/pipe/addMember(obj/machinery/atmospherics/A)
|
||||
parent.addMember(A, src)
|
||||
|
||||
/obj/machinery/atmospherics/addMember(obj/machinery/atmospherics/A)
|
||||
var/datum/pipeline/P = returnPipenet(A)
|
||||
P.addMember(A, src)
|
||||
|
||||
/datum/pipeline/proc/temporarily_store_air()
|
||||
//Update individual gas_mixtures by volume ratio
|
||||
@@ -41,149 +162,6 @@
|
||||
|
||||
corresponding.moles = trace_gas.moles*member.volume/air.volume
|
||||
|
||||
var/pipenetwarnings = 10
|
||||
|
||||
/datum/pipeline/proc/build_pipeline(obj/machinery/atmospherics/pipe/base)
|
||||
var/list/possible_expansions = list(base)
|
||||
members = list(base)
|
||||
edges = list()
|
||||
|
||||
var/volume = base.volume
|
||||
base.parent = src
|
||||
alert_pressure = base.alert_pressure
|
||||
|
||||
if(base.air_temporary)
|
||||
air = base.air_temporary
|
||||
base.air_temporary = null
|
||||
else
|
||||
air = new
|
||||
while(possible_expansions.len>0)
|
||||
for(var/obj/machinery/atmospherics/pipe/borderline in possible_expansions)
|
||||
|
||||
var/list/result = borderline.pipeline_expansion()
|
||||
var/edge_check = result.len
|
||||
|
||||
if(result.len>0)
|
||||
for(var/obj/machinery/atmospherics/pipe/item in result)
|
||||
if(!members.Find(item))
|
||||
|
||||
if(item.parent)
|
||||
if(pipenetwarnings > 0)
|
||||
error("[item.type] added to a pipenet while still having one. ([item.x], [item.y], [item.z])")
|
||||
pipenetwarnings -= 1
|
||||
if(pipenetwarnings == 0)
|
||||
error("further messages about pipenets will be supressed")
|
||||
members += item
|
||||
possible_expansions += item
|
||||
|
||||
volume += item.volume
|
||||
item.parent = src
|
||||
|
||||
alert_pressure = min(alert_pressure, item.alert_pressure)
|
||||
|
||||
if(item.air_temporary)
|
||||
air.merge(item.air_temporary)
|
||||
item.air_temporary = null
|
||||
|
||||
edge_check--
|
||||
|
||||
if(edge_check>0)
|
||||
edges += borderline
|
||||
|
||||
possible_expansions -= borderline
|
||||
|
||||
air.volume = volume
|
||||
|
||||
/datum/pipeline/proc/addMember(obj/machinery/atmospherics/pipe/P)
|
||||
P.parent = src
|
||||
var/list/adjacent = P.pipeline_expansion()
|
||||
var/list/oldedges = list()
|
||||
for(var/obj/machinery/atmospherics/pipe/I in adjacent)
|
||||
oldedges += I
|
||||
if(I.parent == src)
|
||||
continue
|
||||
var/datum/pipeline/E = I.parent
|
||||
air.volume += E.air.volume
|
||||
if(E.members.len > members.len)
|
||||
members.Add(E.members)
|
||||
for(var/obj/machinery/atmospherics/pipe/S in E.members)
|
||||
S.parent = src
|
||||
edges.Add(E.edges)
|
||||
air.merge(E.air)
|
||||
adjacent -= I
|
||||
if(adjacent.len)
|
||||
edges |= P
|
||||
if(!members.Find(P))
|
||||
members += P
|
||||
air.volume += P.volume
|
||||
if(oldedges.len)
|
||||
for(var/obj/machinery/atmospherics/pipe/O in oldedges)
|
||||
var/list/Oedges = O.pipeline_expansion()
|
||||
for(var/obj/machinery/atmospherics/pipe/Oedgepipes in Oedges)
|
||||
Oedges -= Oedgepipes
|
||||
if(Oedges.len)
|
||||
edges |= O
|
||||
else
|
||||
edges -= O
|
||||
|
||||
/obj/machinery/atmospherics/proc/addMember(obj/machinery/atmospherics/pipe/P)
|
||||
return
|
||||
|
||||
/obj/machinery/atmospherics/pipe/addMember(obj/machinery/atmospherics/pipe/P)
|
||||
parent.addMember(P)
|
||||
|
||||
/datum/pipeline/Destroy()
|
||||
if(network)
|
||||
qdel(network)
|
||||
if(air && air.volume)
|
||||
temporarily_store_air()
|
||||
for(var/obj/machinery/atmospherics/pipe/P in members)
|
||||
P.parent = null
|
||||
..()
|
||||
|
||||
/datum/pipeline/proc/network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference)
|
||||
|
||||
if(new_network.line_members.Find(src))
|
||||
return 0
|
||||
|
||||
new_network.line_members += src
|
||||
|
||||
network = new_network
|
||||
|
||||
for(var/obj/machinery/atmospherics/pipe/edge in edges)
|
||||
for(var/obj/machinery/atmospherics/result in edge.pipeline_expansion())
|
||||
if(!istype(result,/obj/machinery/atmospherics/pipe) && (result!=reference))
|
||||
result.network_expand(new_network, edge)
|
||||
|
||||
return 1
|
||||
|
||||
/datum/pipeline/proc/return_network(obj/machinery/atmospherics/reference)
|
||||
if(!network)
|
||||
network = new /datum/pipe_network()
|
||||
network.build_network(src, null)
|
||||
//technically passing these parameters should not be allowed
|
||||
//however pipe_network.build_network(..) and pipeline.network_extend(...)
|
||||
// were setup to properly handle this case
|
||||
|
||||
return network
|
||||
|
||||
/datum/pipeline/proc/mingle_with_turf(turf/simulated/target, mingle_volume)
|
||||
var/datum/gas_mixture/air_sample = air.remove_ratio(mingle_volume/air.volume)
|
||||
air_sample.volume = mingle_volume
|
||||
|
||||
var/datum/gas_mixture/turf_air = target.return_air()
|
||||
|
||||
equalize_gases(list(air_sample, turf_air))
|
||||
air.merge(air_sample)
|
||||
//turf_air already modified by equalize_gases()
|
||||
|
||||
if(istype(target))
|
||||
if(target.air)
|
||||
if(target.air.check_tile_graphic())
|
||||
target.update_visuals(target.air)
|
||||
if(network)
|
||||
network.update = 1
|
||||
|
||||
/datum/pipeline/proc/temperature_interact(turf/target, share_volume, thermal_conductivity)
|
||||
var/total_heat_capacity = air.heat_capacity()
|
||||
var/partial_heat_capacity = total_heat_capacity*(share_volume/air.volume)
|
||||
@@ -234,5 +212,215 @@ var/pipenetwarnings = 10
|
||||
(partial_heat_capacity*target.heat_capacity/(partial_heat_capacity+target.heat_capacity))
|
||||
|
||||
air.temperature -= heat/total_heat_capacity
|
||||
if(network)
|
||||
network.update = 1
|
||||
update = 1
|
||||
|
||||
/datum/pipeline/proc/reconcile_air()
|
||||
var/list/datum/gas_mixture/GL = list()
|
||||
var/list/datum/pipeline/PL = list()
|
||||
PL += src
|
||||
|
||||
for(var/i=1;i<=PL.len;i++)
|
||||
var/datum/pipeline/P = PL[i]
|
||||
GL += P.air
|
||||
GL += P.other_airs
|
||||
for(var/obj/machinery/atmospherics/binary/valve/V in P.other_atmosmch)
|
||||
if(V.open)
|
||||
PL |= V.parent1
|
||||
PL |= V.parent2
|
||||
for(var/obj/machinery/atmospherics/unary/portables_connector/C in P.other_atmosmch)
|
||||
if(C.connected_device)
|
||||
GL += C.portableConnectorReturnAir()
|
||||
|
||||
var/total_volume = 0
|
||||
var/total_thermal_energy = 0
|
||||
var/total_heat_capacity = 0
|
||||
var/total_oxygen = 0
|
||||
var/total_nitrogen = 0
|
||||
var/total_toxins = 0
|
||||
var/total_carbon_dioxide = 0
|
||||
var/list/total_trace_gases = list()
|
||||
|
||||
for(var/datum/gas_mixture/G in GL)
|
||||
total_volume += G.volume
|
||||
total_thermal_energy += G.thermal_energy()
|
||||
total_heat_capacity += G.heat_capacity()
|
||||
|
||||
total_oxygen += G.oxygen
|
||||
total_nitrogen += G.nitrogen
|
||||
total_toxins += G.toxins
|
||||
total_carbon_dioxide += G.carbon_dioxide
|
||||
|
||||
if(G.trace_gases.len)
|
||||
for(var/datum/gas/trace_gas in G.trace_gases)
|
||||
var/datum/gas/corresponding = locate(trace_gas.type) in total_trace_gases
|
||||
if(!corresponding)
|
||||
corresponding = new trace_gas.type()
|
||||
total_trace_gases += corresponding
|
||||
|
||||
corresponding.moles += trace_gas.moles
|
||||
|
||||
if(total_volume > 0)
|
||||
|
||||
//Calculate temperature
|
||||
var/temperature = 0
|
||||
|
||||
if(total_heat_capacity > 0)
|
||||
temperature = total_thermal_energy/total_heat_capacity
|
||||
|
||||
//Update individual gas_mixtures by volume ratio
|
||||
for(var/datum/gas_mixture/G in GL)
|
||||
G.oxygen = total_oxygen*G.volume/total_volume
|
||||
G.nitrogen = total_nitrogen*G.volume/total_volume
|
||||
G.toxins = total_toxins*G.volume/total_volume
|
||||
G.carbon_dioxide = total_carbon_dioxide*G.volume/total_volume
|
||||
|
||||
G.temperature = temperature
|
||||
|
||||
if(total_trace_gases.len)
|
||||
for(var/datum/gas/trace_gas in total_trace_gases)
|
||||
var/datum/gas/corresponding = locate(trace_gas.type) in G.trace_gases
|
||||
if(!corresponding)
|
||||
corresponding = new trace_gas.type()
|
||||
G.trace_gases += corresponding
|
||||
|
||||
corresponding.moles = trace_gas.moles*G.volume/total_volume
|
||||
|
||||
|
||||
/*
|
||||
/datum/pipeline/proc/mingle_with_turf(turf/simulated/target, mingle_volume)
|
||||
var/datum/gas_mixture/air_sample = air.remove_ratio(mingle_volume/air.volume)
|
||||
air_sample.volume = mingle_volume
|
||||
|
||||
var/datum/gas_mixture/turf_air = target.return_air()
|
||||
|
||||
equalize_gases(list(air_sample, turf_air))
|
||||
air.merge(air_sample)
|
||||
//turf_air already modified by equalize_gases()
|
||||
|
||||
if(istype(target))
|
||||
if(target.air)
|
||||
if(target.air.check_tile_graphic())
|
||||
target.update_visuals(target.air)
|
||||
update = 1
|
||||
|
||||
/datum/pipeline/proc/reconcile_air()
|
||||
//Perfectly equalize all gases members instantly
|
||||
|
||||
//Calculate totals from individual components
|
||||
var/total_thermal_energy = 0
|
||||
var/total_heat_capacity = 0
|
||||
var/datum/gas_mixture/air_transient = new()
|
||||
var/list/gases = list(air)
|
||||
gases.Add(other_airs)
|
||||
for(var/datum/gas_mixture/gas in gases)
|
||||
air_transient.volume += gas.volume
|
||||
total_thermal_energy += gas.thermal_energy()
|
||||
total_heat_capacity += gas.heat_capacity()
|
||||
|
||||
air_transient.oxygen += gas.oxygen
|
||||
air_transient.nitrogen += gas.nitrogen
|
||||
air_transient.toxins += gas.toxins
|
||||
air_transient.carbon_dioxide += gas.carbon_dioxide
|
||||
|
||||
if(gas.trace_gases.len)
|
||||
for(var/datum/gas/trace_gas in gas.trace_gases)
|
||||
var/datum/gas/corresponding = locate(trace_gas.type) in air_transient.trace_gases
|
||||
if(!corresponding)
|
||||
corresponding = new trace_gas.type()
|
||||
air_transient.trace_gases += corresponding
|
||||
|
||||
corresponding.moles += trace_gas.moles
|
||||
|
||||
if(air_transient.volume > 0)
|
||||
|
||||
if(total_heat_capacity > 0)
|
||||
air_transient.temperature = total_thermal_energy/total_heat_capacity
|
||||
|
||||
//Allow air mixture to react
|
||||
if(air_transient.react())
|
||||
update = 1
|
||||
|
||||
else
|
||||
air_transient.temperature = 0
|
||||
|
||||
//Update individual gas_mixtures by volume ratio
|
||||
for(var/datum/gas_mixture/gas in gases)
|
||||
gas.oxygen = air_transient.oxygen*gas.volume/air_transient.volume
|
||||
gas.nitrogen = air_transient.nitrogen*gas.volume/air_transient.volume
|
||||
gas.toxins = air_transient.toxins*gas.volume/air_transient.volume
|
||||
gas.carbon_dioxide = air_transient.carbon_dioxide*gas.volume/air_transient.volume
|
||||
|
||||
gas.temperature = air_transient.temperature
|
||||
|
||||
if(air_transient.trace_gases.len)
|
||||
for(var/datum/gas/trace_gas in air_transient.trace_gases)
|
||||
var/datum/gas/corresponding = locate(trace_gas.type) in gas.trace_gases
|
||||
if(!corresponding)
|
||||
corresponding = new trace_gas.type()
|
||||
gas.trace_gases += corresponding
|
||||
|
||||
corresponding.moles = trace_gas.moles*gas.volume/air_transient.volume
|
||||
return 1
|
||||
|
||||
proc/equalize_gases(datum/gas_mixture/list/gases)
|
||||
//Perfectly equalize all gases members instantly
|
||||
|
||||
//Calculate totals from individual components
|
||||
var/total_volume = 0
|
||||
var/total_thermal_energy = 0
|
||||
var/total_heat_capacity = 0
|
||||
|
||||
var/total_oxygen = 0
|
||||
var/total_nitrogen = 0
|
||||
var/total_toxins = 0
|
||||
var/total_carbon_dioxide = 0
|
||||
|
||||
var/list/total_trace_gases = list()
|
||||
|
||||
for(var/datum/gas_mixture/gas in gases)
|
||||
total_volume += gas.volume
|
||||
total_thermal_energy += gas.thermal_energy()
|
||||
total_heat_capacity += gas.heat_capacity()
|
||||
|
||||
total_oxygen += gas.oxygen
|
||||
total_nitrogen += gas.nitrogen
|
||||
total_toxins += gas.toxins
|
||||
total_carbon_dioxide += gas.carbon_dioxide
|
||||
|
||||
if(gas.trace_gases.len)
|
||||
for(var/datum/gas/trace_gas in gas.trace_gases)
|
||||
var/datum/gas/corresponding = locate(trace_gas.type) in total_trace_gases
|
||||
if(!corresponding)
|
||||
corresponding = new trace_gas.type()
|
||||
total_trace_gases += corresponding
|
||||
|
||||
corresponding.moles += trace_gas.moles
|
||||
|
||||
if(total_volume > 0)
|
||||
|
||||
//Calculate temperature
|
||||
var/temperature = 0
|
||||
|
||||
if(total_heat_capacity > 0)
|
||||
temperature = total_thermal_energy/total_heat_capacity
|
||||
|
||||
//Update individual gas_mixtures by volume ratio
|
||||
for(var/datum/gas_mixture/gas in gases)
|
||||
gas.oxygen = total_oxygen*gas.volume/total_volume
|
||||
gas.nitrogen = total_nitrogen*gas.volume/total_volume
|
||||
gas.toxins = total_toxins*gas.volume/total_volume
|
||||
gas.carbon_dioxide = total_carbon_dioxide*gas.volume/total_volume
|
||||
|
||||
gas.temperature = temperature
|
||||
|
||||
if(total_trace_gases.len)
|
||||
for(var/datum/gas/trace_gas in total_trace_gases)
|
||||
var/datum/gas/corresponding = locate(trace_gas.type) in gas.trace_gases
|
||||
if(!corresponding)
|
||||
corresponding = new trace_gas.type()
|
||||
gas.trace_gases += corresponding
|
||||
|
||||
corresponding.moles = trace_gas.moles*gas.volume/total_volume
|
||||
|
||||
return 1
|
||||
*/
|
||||
@@ -82,4 +82,4 @@
|
||||
node2 = target
|
||||
break
|
||||
update_icon()
|
||||
return
|
||||
return
|
||||
@@ -8,7 +8,7 @@
|
||||
var/alert_pressure = 80*ONE_ATMOSPHERE
|
||||
//minimum pressure before check_pressure(...) should be called
|
||||
|
||||
/obj/machinery/atmospherics/pipe/proc/pipeline_expansion()
|
||||
/obj/machinery/atmospherics/proc/pipeline_expansion()
|
||||
return null
|
||||
|
||||
/obj/machinery/atmospherics/pipe/proc/check_pressure(pressure)
|
||||
@@ -23,32 +23,12 @@
|
||||
air_update_turf()
|
||||
|
||||
/obj/machinery/atmospherics/pipe/return_air()
|
||||
if(!parent)
|
||||
parent = new /datum/pipeline()
|
||||
parent.build_pipeline(src)
|
||||
return parent.air
|
||||
|
||||
/obj/machinery/atmospherics/pipe/build_network()
|
||||
if(!parent)
|
||||
parent = new /datum/pipeline()
|
||||
parent.build_pipeline(src)
|
||||
return parent.return_network()
|
||||
|
||||
/obj/machinery/atmospherics/pipe/network_expand(datum/pipe_network/new_network, obj/machinery/atmospherics/pipe/reference)
|
||||
if(!parent)
|
||||
parent = new /datum/pipeline()
|
||||
parent.build_pipeline(src)
|
||||
return parent.network_expand(new_network, reference)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/return_network(obj/machinery/atmospherics/reference)
|
||||
if(!parent)
|
||||
parent = new /datum/pipeline()
|
||||
parent.build_pipeline(src)
|
||||
return parent.return_network(reference)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/Destroy()
|
||||
del(parent)
|
||||
..()
|
||||
|
||||
/obj/machinery/atmospherics/pipe/attackby(obj/item/weapon/W, mob/user)
|
||||
if(istype(W, /obj/item/device/analyzer))
|
||||
@@ -58,3 +38,6 @@
|
||||
return
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/machinery/atmospherics/pipe/setPipenet(datum/pipeline/P)
|
||||
parent = P
|
||||
|
||||
@@ -57,14 +57,17 @@
|
||||
if(node1)
|
||||
var/obj/machinery/atmospherics/A = node1
|
||||
node1.disconnect(src)
|
||||
node1 = null
|
||||
A.build_network()
|
||||
if(node2)
|
||||
var/obj/machinery/atmospherics/A = node2
|
||||
node2.disconnect(src)
|
||||
node2 = null
|
||||
A.build_network()
|
||||
if(node3)
|
||||
var/obj/machinery/atmospherics/A = node3
|
||||
node3.disconnect(src)
|
||||
node3 = null
|
||||
A.build_network()
|
||||
releaseAirToTurf()
|
||||
..()
|
||||
|
||||
@@ -55,18 +55,22 @@
|
||||
if(node1)
|
||||
var/obj/machinery/atmospherics/A = node1
|
||||
node1.disconnect(src)
|
||||
node1 = null
|
||||
A.build_network()
|
||||
if(node2)
|
||||
var/obj/machinery/atmospherics/A = node2
|
||||
node2.disconnect(src)
|
||||
node2 = null
|
||||
A.build_network()
|
||||
if(node3)
|
||||
var/obj/machinery/atmospherics/A = node3
|
||||
node3.disconnect(src)
|
||||
node3 = null
|
||||
A.build_network()
|
||||
if(node4)
|
||||
var/obj/machinery/atmospherics/A = node4
|
||||
node4.disconnect(src)
|
||||
node4 = null
|
||||
A.build_network()
|
||||
releaseAirToTurf()
|
||||
..()
|
||||
|
||||
@@ -69,10 +69,12 @@ The regular pipe you see everywhere, including bent ones.
|
||||
if(node1)
|
||||
var/obj/machinery/atmospherics/A = node1
|
||||
node1.disconnect(src)
|
||||
node1 = null
|
||||
A.build_network()
|
||||
if(node2)
|
||||
var/obj/machinery/atmospherics/A = node2
|
||||
node2.disconnect(src)
|
||||
node2 = null
|
||||
A.build_network()
|
||||
releaseAirToTurf()
|
||||
..()
|
||||
|
||||
+37
-125
@@ -1,42 +1,12 @@
|
||||
|
||||
/*
|
||||
Atmospheric Tanks
|
||||
*/
|
||||
/obj/machinery/atmospherics/pipe/tank
|
||||
/obj/machinery/atmospherics/unary/tank
|
||||
icon = 'icons/obj/atmospherics/pipe_tank.dmi'
|
||||
icon_state = "generic"
|
||||
|
||||
name = "pressure tank"
|
||||
desc = "A large vessel containing pressurized gas."
|
||||
|
||||
volume = 10000 //in liters, 1 meters by 1 meters by 2 meters
|
||||
|
||||
dir = SOUTH
|
||||
initialize_directions = SOUTH
|
||||
var/volume = 10000 //in liters, 1 meters by 1 meters by 2 meters
|
||||
density = 1
|
||||
can_unwrench = 0
|
||||
var/obj/machinery/atmospherics/node
|
||||
var/showpipe = 0
|
||||
|
||||
/obj/machinery/atmospherics/pipe/tank/New()
|
||||
initialize_directions = dir
|
||||
..()
|
||||
|
||||
/obj/machinery/atmospherics/pipe/tank/hide(var/intact)
|
||||
showpipe = !intact
|
||||
update_icon()
|
||||
|
||||
..(intact)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/tank/Destroy()
|
||||
if(node)
|
||||
node.disconnect(src)
|
||||
..()
|
||||
|
||||
/obj/machinery/atmospherics/pipe/tank/pipeline_expansion()
|
||||
return list(node)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/tank/update_icon()
|
||||
/obj/machinery/atmospherics/unary/tank/update_icon()
|
||||
underlays.Cut()
|
||||
if(showpipe)
|
||||
var/state
|
||||
@@ -46,124 +16,66 @@ Atmospheric Tanks
|
||||
col = node.pipe_color
|
||||
else
|
||||
state = "pipe_exposed"
|
||||
|
||||
underlays += getpipeimage('icons/obj/atmospherics/pipe_tank.dmi', state, initialize_directions, col)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/tank/initialize()
|
||||
var/connect_direction = dir
|
||||
for(var/obj/machinery/atmospherics/target in get_step(src,connect_direction))
|
||||
if(target.initialize_directions & get_dir(target,src))
|
||||
node = target
|
||||
break
|
||||
|
||||
if(level == 2)
|
||||
showpipe = 1
|
||||
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/atmospherics/pipe/tank/disconnect(obj/machinery/atmospherics/reference)
|
||||
if(reference == node)
|
||||
if(istype(node, /obj/machinery/atmospherics/pipe))
|
||||
del(parent)
|
||||
node = null
|
||||
update_icon()
|
||||
|
||||
|
||||
/*
|
||||
CO2 Tank
|
||||
*/
|
||||
/obj/machinery/atmospherics/pipe/tank/carbon_dioxide
|
||||
/obj/machinery/atmospherics/unary/tank/carbon_dioxide
|
||||
name = "pressure tank (Carbon Dioxide)"
|
||||
|
||||
/obj/machinery/atmospherics/pipe/tank/carbon_dioxide/New()
|
||||
air_temporary = new
|
||||
air_temporary.volume = volume
|
||||
air_temporary.temperature = T20C
|
||||
|
||||
air_temporary.carbon_dioxide = (25*ONE_ATMOSPHERE)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature)
|
||||
|
||||
/obj/machinery/atmospherics/unary/tank/carbon_dioxide/New()
|
||||
..()
|
||||
air_contents.volume = volume
|
||||
air_contents.temperature = T20C
|
||||
air_contents.carbon_dioxide = (25*ONE_ATMOSPHERE)*(air_contents.volume)/(R_IDEAL_GAS_EQUATION*air_contents.temperature)
|
||||
|
||||
/*
|
||||
Plasma Tank
|
||||
*/
|
||||
/obj/machinery/atmospherics/pipe/tank/toxins
|
||||
/obj/machinery/atmospherics/unary/tank/toxins
|
||||
icon_state = "orange"
|
||||
name = "pressure tank (Plasma)"
|
||||
|
||||
/obj/machinery/atmospherics/pipe/tank/toxins/New()
|
||||
air_temporary = new
|
||||
air_temporary.volume = volume
|
||||
air_temporary.temperature = T20C
|
||||
|
||||
air_temporary.toxins = (25*ONE_ATMOSPHERE)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature)
|
||||
|
||||
/obj/machinery/atmospherics/unary/tank/toxins/New()
|
||||
..()
|
||||
air_contents.volume = volume
|
||||
air_contents.temperature = T20C
|
||||
air_contents.toxins = (25*ONE_ATMOSPHERE)*(air_contents.volume)/(R_IDEAL_GAS_EQUATION*air_contents.temperature)
|
||||
|
||||
/*
|
||||
Plasma + Oxygen Tank
|
||||
*/
|
||||
/obj/machinery/atmospherics/pipe/tank/oxygen_agent_b
|
||||
/obj/machinery/atmospherics/unary/tank/oxygen_agent_b
|
||||
icon_state = "orange_2"
|
||||
name = "pressure tank (Oxygen + Plasma)"
|
||||
|
||||
/obj/machinery/atmospherics/pipe/tank/oxygen_agent_b/New()
|
||||
air_temporary = new
|
||||
air_temporary.volume = volume
|
||||
air_temporary.temperature = T0C
|
||||
|
||||
var/datum/gas/oxygen_agent_b/trace_gas = new
|
||||
trace_gas.moles = (25*ONE_ATMOSPHERE)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature)
|
||||
|
||||
air_temporary.trace_gases += trace_gas
|
||||
|
||||
/obj/machinery/atmospherics/unary/tank/oxygen_agent_b/New()
|
||||
..()
|
||||
air_contents.volume = volume
|
||||
air_contents.temperature = T0C
|
||||
var/datum/gas/oxygen_agent_b/trace_gas = new
|
||||
trace_gas.moles = (25*ONE_ATMOSPHERE)*(air_contents.volume)/(R_IDEAL_GAS_EQUATION*air_contents.temperature)
|
||||
air_contents.trace_gases += trace_gas
|
||||
|
||||
/*
|
||||
Oxygen Tank
|
||||
*/
|
||||
/obj/machinery/atmospherics/pipe/tank/oxygen
|
||||
/obj/machinery/atmospherics/unary/tank/oxygen
|
||||
icon_state = "blue"
|
||||
name = "pressure tank (Oxygen)"
|
||||
|
||||
/obj/machinery/atmospherics/pipe/tank/oxygen/New()
|
||||
air_temporary = new
|
||||
air_temporary.volume = volume
|
||||
air_temporary.temperature = T20C
|
||||
|
||||
air_temporary.oxygen = (25*ONE_ATMOSPHERE)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature)
|
||||
|
||||
/obj/machinery/atmospherics/unary/tank/oxygen/New()
|
||||
..()
|
||||
air_contents.volume = volume
|
||||
air_contents.temperature = T20C
|
||||
air_contents.oxygen = (25*ONE_ATMOSPHERE)*(air_contents.volume)/(R_IDEAL_GAS_EQUATION*air_contents.temperature)
|
||||
|
||||
/*
|
||||
Nitrogen Tank
|
||||
*/
|
||||
/obj/machinery/atmospherics/pipe/tank/nitrogen
|
||||
/obj/machinery/atmospherics/unary/tank/nitrogen
|
||||
icon_state = "red"
|
||||
name = "pressure tank (Nitrogen)"
|
||||
|
||||
/obj/machinery/atmospherics/pipe/tank/nitrogen/New()
|
||||
air_temporary = new
|
||||
air_temporary.volume = volume
|
||||
air_temporary.temperature = T20C
|
||||
|
||||
air_temporary.nitrogen = (25*ONE_ATMOSPHERE)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature)
|
||||
|
||||
/obj/machinery/atmospherics/unary/tank/nitrogen/New()
|
||||
..()
|
||||
air_contents.volume = volume
|
||||
air_contents.temperature = T20C
|
||||
air_contents.nitrogen = (25*ONE_ATMOSPHERE)*(air_contents.volume)/(R_IDEAL_GAS_EQUATION*air_contents.temperature)
|
||||
|
||||
/*
|
||||
Air Tank
|
||||
*/
|
||||
/obj/machinery/atmospherics/pipe/tank/air
|
||||
/obj/machinery/atmospherics/unary/tank/air
|
||||
icon_state = "grey"
|
||||
name = "pressure tank (Air)"
|
||||
|
||||
/obj/machinery/atmospherics/pipe/tank/air/New()
|
||||
air_temporary = new
|
||||
air_temporary.volume = volume
|
||||
air_temporary.temperature = T20C
|
||||
|
||||
air_temporary.oxygen = (25*ONE_ATMOSPHERE*O2STANDARD)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature)
|
||||
air_temporary.nitrogen = (25*ONE_ATMOSPHERE*N2STANDARD)*(air_temporary.volume)/(R_IDEAL_GAS_EQUATION*air_temporary.temperature)
|
||||
|
||||
..()
|
||||
/obj/machinery/atmospherics/unary/tank/air/New()
|
||||
..()
|
||||
air_contents.volume = volume
|
||||
air_contents.temperature = T20C
|
||||
air_contents.oxygen = (25*ONE_ATMOSPHERE*O2STANDARD)*(air_contents.volume)/(R_IDEAL_GAS_EQUATION*air_contents.temperature)
|
||||
air_contents.nitrogen = (25*ONE_ATMOSPHERE*N2STANDARD)*(air_contents.volume)/(R_IDEAL_GAS_EQUATION*air_contents.temperature)
|
||||
@@ -1,89 +0,0 @@
|
||||
|
||||
/*
|
||||
Atmospheric Vent
|
||||
*/
|
||||
/obj/machinery/atmospherics/pipe/vent
|
||||
icon = 'icons/obj/atmospherics/pipe_vent.dmi'
|
||||
icon_state = "intact"
|
||||
|
||||
name = "vent"
|
||||
desc = "A large air vent"
|
||||
|
||||
level = 1
|
||||
|
||||
volume = 250
|
||||
|
||||
dir = SOUTH
|
||||
initialize_directions = SOUTH
|
||||
|
||||
can_unwrench = 0
|
||||
|
||||
var/build_killswitch = 1
|
||||
|
||||
var/obj/machinery/atmospherics/node1
|
||||
|
||||
/obj/machinery/atmospherics/pipe/vent/New()
|
||||
initialize_directions = dir
|
||||
..()
|
||||
|
||||
/obj/machinery/atmospherics/pipe/vent/process()
|
||||
if(!parent)
|
||||
if(build_killswitch <= 0)
|
||||
. = PROCESS_KILL
|
||||
else
|
||||
build_killswitch--
|
||||
..()
|
||||
return
|
||||
else
|
||||
parent.mingle_with_turf(loc, 250)
|
||||
/*
|
||||
if(!node1)
|
||||
if(!nodealert)
|
||||
//world << "Missing node from [src] at [src.x],[src.y],[src.z]"
|
||||
nodealert = 1
|
||||
else if (nodealert)
|
||||
nodealert = 0
|
||||
*/
|
||||
/obj/machinery/atmospherics/pipe/vent/Destroy()
|
||||
if(node1)
|
||||
node1.disconnect(src)
|
||||
..()
|
||||
|
||||
/obj/machinery/atmospherics/pipe/vent/pipeline_expansion()
|
||||
return list(node1)
|
||||
|
||||
/obj/machinery/atmospherics/pipe/vent/update_icon()
|
||||
if(node1)
|
||||
icon_state = "intact"
|
||||
|
||||
dir = get_dir(src, node1)
|
||||
|
||||
else
|
||||
icon_state = "exposed"
|
||||
|
||||
/obj/machinery/atmospherics/pipe/vent/initialize()
|
||||
var/connect_direction = dir
|
||||
|
||||
for(var/obj/machinery/atmospherics/target in get_step(src,connect_direction))
|
||||
if(target.initialize_directions & get_dir(target,src))
|
||||
node1 = target
|
||||
break
|
||||
|
||||
update_icon()
|
||||
|
||||
/obj/machinery/atmospherics/pipe/vent/disconnect(obj/machinery/atmospherics/reference)
|
||||
if(reference == node1)
|
||||
if(istype(node1, /obj/machinery/atmospherics/pipe))
|
||||
del(parent)
|
||||
node1 = null
|
||||
|
||||
update_icon()
|
||||
|
||||
return null
|
||||
|
||||
/obj/machinery/atmospherics/pipe/vent/hide(var/i) //to make the little pipe section invisible, the icon changes.
|
||||
if(node1)
|
||||
icon_state = "[i == 1 && istype(loc, /turf/simulated) ? "h" : "" ]intact"
|
||||
dir = get_dir(src, node1)
|
||||
else
|
||||
icon_state = "exposed"
|
||||
@@ -284,9 +284,9 @@ var/global/pipe_processing_killed = 0
|
||||
processing_objects -= Object
|
||||
|
||||
/datum/controller/game_controller/proc/process_pipenets()
|
||||
last_thing_processed = /datum/pipe_network
|
||||
for(var/datum/pipe_network/Network in pipe_networks)
|
||||
Network.process()
|
||||
last_thing_processed = /datum/pipeline
|
||||
for(var/datum/pipeline/P in pipe_networks)
|
||||
P.process()
|
||||
|
||||
/datum/controller/game_controller/proc/process_powernets()
|
||||
last_thing_processed = /datum/powernet
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
use_power = 0
|
||||
var/datum/gas_mixture/air_contents = new
|
||||
|
||||
var/obj/machinery/atmospherics/portables_connector/connected_port
|
||||
var/obj/machinery/atmospherics/unary/portables_connector/connected_port
|
||||
var/obj/item/weapon/tank/holding
|
||||
|
||||
var/volume = 0
|
||||
@@ -34,7 +34,7 @@
|
||||
/obj/machinery/portable_atmospherics/update_icon()
|
||||
return null
|
||||
|
||||
/obj/machinery/portable_atmospherics/proc/connect(obj/machinery/atmospherics/portables_connector/new_port)
|
||||
/obj/machinery/portable_atmospherics/proc/connect(obj/machinery/atmospherics/unary/portables_connector/new_port)
|
||||
//Make sure not already connected to something else
|
||||
if(connected_port || !new_port || new_port.connected_device)
|
||||
return 0
|
||||
@@ -46,32 +46,22 @@
|
||||
//Perform the connection
|
||||
connected_port = new_port
|
||||
connected_port.connected_device = src
|
||||
connected_port.parent.reconcile_air()
|
||||
|
||||
anchored = 1 //Prevent movement
|
||||
|
||||
//Actually enforce the air sharing
|
||||
var/datum/pipe_network/network = connected_port.return_network(src)
|
||||
if(network && !network.gases.Find(air_contents))
|
||||
network.gases += air_contents
|
||||
network.update = 1
|
||||
|
||||
return 1
|
||||
|
||||
/obj/machinery/portable_atmospherics/proc/disconnect()
|
||||
if(!connected_port)
|
||||
return 0
|
||||
|
||||
var/datum/pipe_network/network = connected_port.return_network(src)
|
||||
if(network)
|
||||
network.gases -= air_contents
|
||||
|
||||
anchored = 0
|
||||
|
||||
connected_port.connected_device = null
|
||||
connected_port = null
|
||||
|
||||
return 1
|
||||
|
||||
/obj/machinery/portable_atmospherics/portableConnectorReturnAir()
|
||||
return air_contents
|
||||
|
||||
/obj/machinery/portable_atmospherics/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
|
||||
if ((istype(W, /obj/item/weapon/tank) && !( src.destroyed )))
|
||||
if (src.holding)
|
||||
@@ -90,7 +80,7 @@
|
||||
update_icon()
|
||||
return
|
||||
else
|
||||
var/obj/machinery/atmospherics/portables_connector/possible_port = locate(/obj/machinery/atmospherics/portables_connector/) in loc
|
||||
var/obj/machinery/atmospherics/unary/portables_connector/possible_port = locate(/obj/machinery/atmospherics/unary/portables_connector) in loc
|
||||
if(possible_port)
|
||||
if(connect(possible_port))
|
||||
user << "<span class='notice'>You connect [name] to the port.</span>"
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
process_occupant()
|
||||
|
||||
if(abs(temperature_archived-air_contents.temperature) > 1)
|
||||
network.update = 1
|
||||
parent.update = 1
|
||||
|
||||
updateDialog()
|
||||
return 1
|
||||
|
||||
@@ -27,7 +27,6 @@ Buildable meters
|
||||
name = "pipe"
|
||||
desc = "A pipe"
|
||||
var/pipe_type = 0
|
||||
//var/pipe_dir = 0
|
||||
var/pipename
|
||||
force = 7
|
||||
icon = 'icons/obj/pipe-item.dmi'
|
||||
@@ -37,7 +36,7 @@ Buildable meters
|
||||
level = 2
|
||||
var/flipped = 0
|
||||
|
||||
/obj/item/pipe/New(var/loc, var/pipe_type as num, var/dir as num, var/obj/machinery/atmospherics/make_from = null)
|
||||
/obj/item/pipe/New(loc, pipe_type, dir, obj/machinery/atmospherics/make_from)
|
||||
..()
|
||||
if (make_from)
|
||||
src.dir = make_from.dir
|
||||
@@ -55,7 +54,7 @@ Buildable meters
|
||||
src.pipe_type = PIPE_INSULATED_STRAIGHT + is_bent
|
||||
else if(istype(make_from, /obj/machinery/atmospherics/pipe/simple))
|
||||
src.pipe_type = PIPE_SIMPLE_STRAIGHT + is_bent
|
||||
else if(istype(make_from, /obj/machinery/atmospherics/portables_connector))
|
||||
else if(istype(make_from, /obj/machinery/atmospherics/unary/portables_connector))
|
||||
src.pipe_type = PIPE_CONNECTOR
|
||||
else if(istype(make_from, /obj/machinery/atmospherics/pipe/manifold))
|
||||
src.pipe_type = PIPE_MANIFOLD
|
||||
@@ -63,7 +62,7 @@ Buildable meters
|
||||
src.pipe_type = PIPE_UVENT
|
||||
else if(istype(make_from, /obj/machinery/atmospherics/valve/digital))
|
||||
src.pipe_type = PIPE_DVALVE
|
||||
else if(istype(make_from, /obj/machinery/atmospherics/valve))
|
||||
else if(istype(make_from, /obj/machinery/atmospherics/binary/valve))
|
||||
src.pipe_type = PIPE_MVALVE
|
||||
else if(istype(make_from, /obj/machinery/atmospherics/binary/pump))
|
||||
src.pipe_type = PIPE_PUMP
|
||||
@@ -305,275 +304,90 @@ Buildable meters
|
||||
switch(pipe_type)
|
||||
if(PIPE_SIMPLE_STRAIGHT, PIPE_SIMPLE_BENT)
|
||||
var/obj/machinery/atmospherics/pipe/simple/P = new( src.loc )
|
||||
P.dir = src.dir
|
||||
P.initialize_directions = pipe_dir
|
||||
var/turf/T = P.loc
|
||||
P.level = T.intact ? 2 : 1
|
||||
P.initialize()
|
||||
if (P.node1)
|
||||
P.node1.initialize()
|
||||
P.node1.addMember(P)
|
||||
if (P.node2)
|
||||
P.node2.initialize()
|
||||
P.node2.addMember(P)
|
||||
P.build_network()
|
||||
P.construction(dir, pipe_dir)
|
||||
|
||||
if(PIPE_HE_STRAIGHT, PIPE_HE_BENT)
|
||||
var/obj/machinery/atmospherics/pipe/simple/heat_exchanging/P = new ( src.loc )
|
||||
P.dir = src.dir
|
||||
P.initialize_directions = pipe_dir
|
||||
P.initialize_directions_he = pipe_dir
|
||||
//var/turf/T = P.loc
|
||||
//P.level = T.intact ? 2 : 1
|
||||
P.initialize()
|
||||
if (P.node1)
|
||||
P.node1.initialize()
|
||||
P.node1.addMember(P)
|
||||
if (P.node2)
|
||||
P.node2.initialize()
|
||||
P.node2.addMember(P)
|
||||
P.build_network()
|
||||
P.construction(dir, pipe_dir)
|
||||
|
||||
if(PIPE_CONNECTOR) // connector
|
||||
var/obj/machinery/atmospherics/portables_connector/C = new( src.loc )
|
||||
C.dir = dir
|
||||
C.initialize_directions = pipe_dir
|
||||
if(PIPE_CONNECTOR)
|
||||
var/obj/machinery/atmospherics/unary/portables_connector/C = new( src.loc )
|
||||
if (pipename)
|
||||
C.name = pipename
|
||||
var/turf/T = C.loc
|
||||
C.level = T.intact ? 2 : 1
|
||||
C.initialize()
|
||||
C.build_network()
|
||||
if (C.node)
|
||||
C.node.initialize()
|
||||
C.node.build_network()
|
||||
C.construction(dir, pipe_dir)
|
||||
|
||||
|
||||
if(PIPE_MANIFOLD) //manifold
|
||||
if(PIPE_MANIFOLD)
|
||||
var/obj/machinery/atmospherics/pipe/manifold/M = new(loc)
|
||||
M.dir = dir
|
||||
M.initialize_directions = pipe_dir
|
||||
var/turf/T = M.loc
|
||||
M.level = T.intact ? 2 : 1
|
||||
M.initialize()
|
||||
if (M.node1)
|
||||
M.node1.initialize()
|
||||
M.node1.addMember(M)
|
||||
if (M.node2)
|
||||
M.node2.initialize()
|
||||
M.node2.addMember(M)
|
||||
if (M.node3)
|
||||
M.node3.initialize()
|
||||
M.node3.addMember(M)
|
||||
M.build_network()
|
||||
M.construction(dir, pipe_dir)
|
||||
|
||||
if(PIPE_4WAYMANIFOLD) //manifold
|
||||
if(PIPE_4WAYMANIFOLD)
|
||||
var/obj/machinery/atmospherics/pipe/manifold4w/M = new( src.loc )
|
||||
|
||||
var/turf/T = M.loc
|
||||
M.level = T.intact ? 2 : 1
|
||||
M.initialize()
|
||||
if (M.node1)
|
||||
M.node1.initialize()
|
||||
M.node1.addMember(M)
|
||||
if (M.node2)
|
||||
M.node2.initialize()
|
||||
M.node2.addMember(M)
|
||||
if (M.node3)
|
||||
M.node3.initialize()
|
||||
M.node3.addMember(M)
|
||||
if (M.node4)
|
||||
M.node4.initialize()
|
||||
M.node4.addMember(M)
|
||||
M.build_network()
|
||||
M.construction(dir, pipe_dir)
|
||||
|
||||
if(PIPE_JUNCTION)
|
||||
var/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction/P = new ( src.loc )
|
||||
P.dir = src.dir
|
||||
P.initialize_directions = src.get_pdir()
|
||||
P.initialize_directions_he = src.get_hdir()
|
||||
//var/turf/T = P.loc
|
||||
//P.level = T.intact ? 2 : 1
|
||||
P.initialize()
|
||||
if (P.node1)
|
||||
P.node1.initialize()
|
||||
P.node1.addMember(P)
|
||||
if (P.node2)
|
||||
P.node2.initialize()
|
||||
P.node2.addMember(P)
|
||||
P.build_network()
|
||||
P.construction(dir, get_pdir())
|
||||
|
||||
if(PIPE_UVENT) //unary vent
|
||||
if(PIPE_UVENT)
|
||||
var/obj/machinery/atmospherics/unary/vent_pump/V = new( src.loc )
|
||||
V.dir = dir
|
||||
V.initialize_directions = pipe_dir
|
||||
V.construction(dir, pipe_dir)
|
||||
|
||||
if(PIPE_MVALVE)
|
||||
var/obj/machinery/atmospherics/binary/valve/V = new(src.loc)
|
||||
if (pipename)
|
||||
V.name = pipename
|
||||
var/turf/T = V.loc
|
||||
V.level = T.intact ? 2 : 1
|
||||
V.initialize()
|
||||
V.build_network()
|
||||
if (V.node)
|
||||
V.node.initialize()
|
||||
V.node.build_network()
|
||||
V.construction(dir, get_pdir())
|
||||
|
||||
|
||||
if(PIPE_MVALVE) //manual valve
|
||||
var/obj/machinery/atmospherics/valve/V = new(src.loc)
|
||||
V.dir = dir
|
||||
V.initialize_directions = pipe_dir
|
||||
if (pipename)
|
||||
V.name = pipename
|
||||
var/turf/T = V.loc
|
||||
V.level = T.intact ? 2 : 1
|
||||
V.initialize()
|
||||
V.build_network()
|
||||
if (V.node1)
|
||||
// world << "[V.node1.name] is connected to valve, forcing it to update its nodes."
|
||||
V.node1.initialize()
|
||||
V.node1.build_network()
|
||||
if (V.node2)
|
||||
// world << "[V.node2.name] is connected to valve, forcing it to update its nodes."
|
||||
V.node2.initialize()
|
||||
V.node2.build_network()
|
||||
|
||||
if(PIPE_DVALVE) //Digital valves. Shameless copypaste from manual valves because I don't into atmos code.
|
||||
if(PIPE_DVALVE)
|
||||
var/obj/machinery/atmospherics/valve/digital/V = new(src.loc)
|
||||
V.dir = dir
|
||||
V.initialize_directions = pipe_dir
|
||||
if (pipename)
|
||||
V.name = pipename
|
||||
var/turf/T = V.loc
|
||||
V.level = T.intact ? 2 : 1
|
||||
V.initialize()
|
||||
V.build_network()
|
||||
if (V.node1)
|
||||
V.node1.initialize()
|
||||
V.node1.build_network()
|
||||
if (V.node2)
|
||||
V.node2.initialize()
|
||||
V.node2.build_network()
|
||||
V.construction(dir, get_pdir())
|
||||
|
||||
if(PIPE_PUMP) //gas pump
|
||||
if(PIPE_PUMP)
|
||||
var/obj/machinery/atmospherics/binary/pump/P = new(src.loc)
|
||||
P.dir = dir
|
||||
P.initialize_directions = pipe_dir
|
||||
if (pipename)
|
||||
P.name = pipename
|
||||
var/turf/T = P.loc
|
||||
P.level = T.intact ? 2 : 1
|
||||
P.initialize()
|
||||
P.build_network()
|
||||
if (P.node1)
|
||||
P.node1.initialize()
|
||||
P.node1.build_network()
|
||||
if (P.node2)
|
||||
P.node2.initialize()
|
||||
P.node2.build_network()
|
||||
|
||||
if(PIPE_GAS_FILTER, PIPE_GAS_MIXER) //Trinary stuff
|
||||
P.construction(dir, pipe_dir)
|
||||
|
||||
if(PIPE_GAS_FILTER, PIPE_GAS_MIXER)
|
||||
var/obj/machinery/atmospherics/trinary/P
|
||||
if(pipe_type == PIPE_GAS_FILTER)
|
||||
P = new /obj/machinery/atmospherics/trinary/filter(src.loc)
|
||||
else if(pipe_type == PIPE_GAS_MIXER)
|
||||
P = new /obj/machinery/atmospherics/trinary/mixer(src.loc)
|
||||
|
||||
P.flipped = flipped
|
||||
P.dir = unflip(dir)
|
||||
P.initialize_directions = pipe_dir
|
||||
if (pipename)
|
||||
P.name = pipename
|
||||
var/turf/T = P.loc
|
||||
P.level = T.intact ? 2 : 1
|
||||
P.initialize()
|
||||
P.build_network()
|
||||
if (P.node1)
|
||||
P.node1.initialize()
|
||||
P.node1.build_network()
|
||||
if (P.node2)
|
||||
P.node2.initialize()
|
||||
P.node2.build_network()
|
||||
if (P.node3)
|
||||
P.node3.initialize()
|
||||
P.node3.build_network()
|
||||
P.construction(unflip(dir), pipe_dir)
|
||||
|
||||
if(PIPE_SCRUBBER) //scrubber
|
||||
if(PIPE_SCRUBBER)
|
||||
var/obj/machinery/atmospherics/unary/vent_scrubber/S = new(src.loc)
|
||||
S.dir = dir
|
||||
S.initialize_directions = pipe_dir
|
||||
if (pipename)
|
||||
S.name = pipename
|
||||
var/turf/T = S.loc
|
||||
S.level = T.intact ? 2 : 1
|
||||
S.initialize()
|
||||
S.build_network()
|
||||
if (S.node)
|
||||
S.node.initialize()
|
||||
S.node.build_network()
|
||||
S.construction(dir, pipe_dir)
|
||||
|
||||
if(PIPE_INSULATED_STRAIGHT, PIPE_INSULATED_BENT)
|
||||
var/obj/machinery/atmospherics/pipe/simple/insulated/P = new( src.loc )
|
||||
P.dir = src.dir
|
||||
P.initialize_directions = pipe_dir
|
||||
var/turf/T = P.loc
|
||||
P.level = T.intact ? 2 : 1
|
||||
P.initialize()
|
||||
if (P.node1)
|
||||
P.node1.initialize()
|
||||
P.node1.addMember(P)
|
||||
if (P.node2)
|
||||
P.node2.initialize()
|
||||
P.node2.addMember(P)
|
||||
P.build_network()
|
||||
P.construction(dir, pipe_dir)
|
||||
|
||||
if(PIPE_PASSIVE_GATE) //passive gate
|
||||
if(PIPE_PASSIVE_GATE)
|
||||
var/obj/machinery/atmospherics/binary/passive_gate/P = new(src.loc)
|
||||
P.dir = dir
|
||||
P.initialize_directions = pipe_dir
|
||||
if (pipename)
|
||||
P.name = pipename
|
||||
var/turf/T = P.loc
|
||||
P.level = T.intact ? 2 : 1
|
||||
P.initialize()
|
||||
P.build_network()
|
||||
if (P.node1)
|
||||
P.node1.initialize()
|
||||
P.node1.build_network()
|
||||
if (P.node2)
|
||||
P.node2.initialize()
|
||||
P.node2.build_network()
|
||||
P.construction(dir, pipe_dir)
|
||||
|
||||
if(PIPE_VOLUME_PUMP) //volume pump
|
||||
if(PIPE_VOLUME_PUMP)
|
||||
var/obj/machinery/atmospherics/binary/volume_pump/P = new(src.loc)
|
||||
P.dir = dir
|
||||
P.initialize_directions = pipe_dir
|
||||
if (pipename)
|
||||
P.name = pipename
|
||||
var/turf/T = P.loc
|
||||
P.level = T.intact ? 2 : 1
|
||||
P.initialize()
|
||||
P.build_network()
|
||||
if (P.node1)
|
||||
P.node1.initialize()
|
||||
P.node1.build_network()
|
||||
if (P.node2)
|
||||
P.node2.initialize()
|
||||
P.node2.build_network()
|
||||
P.construction(dir, pipe_dir)
|
||||
|
||||
if(PIPE_HEAT_EXCHANGE) // heat exchanger
|
||||
if(PIPE_HEAT_EXCHANGE)
|
||||
var/obj/machinery/atmospherics/unary/heat_exchanger/C = new( src.loc )
|
||||
C.dir = dir
|
||||
C.initialize_directions = pipe_dir
|
||||
if (pipename)
|
||||
C.name = pipename
|
||||
var/turf/T = C.loc
|
||||
C.level = T.intact ? 2 : 1
|
||||
C.initialize()
|
||||
C.build_network()
|
||||
if (C.node)
|
||||
C.node.initialize()
|
||||
C.node.build_network()
|
||||
C.construction(dir, pipe_dir)
|
||||
|
||||
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
|
||||
user.visible_message( \
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
var/internal_tank_valve = ONE_ATMOSPHERE
|
||||
var/obj/machinery/portable_atmospherics/canister/internal_tank
|
||||
var/datum/gas_mixture/cabin_air
|
||||
var/obj/machinery/atmospherics/portables_connector/connected_port = null
|
||||
var/obj/machinery/atmospherics/unary/portables_connector/connected_port = null
|
||||
|
||||
var/obj/item/device/radio/radio = null
|
||||
|
||||
@@ -833,7 +833,7 @@ obj/mecha/proc/can_use(mob/user)
|
||||
. = t_air.return_temperature()
|
||||
return
|
||||
|
||||
/obj/mecha/proc/connect(obj/machinery/atmospherics/portables_connector/new_port)
|
||||
/obj/mecha/proc/connect(obj/machinery/atmospherics/unary/portables_connector/new_port)
|
||||
//Make sure not already connected to something else
|
||||
if(connected_port || !new_port || new_port.connected_device)
|
||||
return 0
|
||||
@@ -845,12 +845,8 @@ obj/mecha/proc/can_use(mob/user)
|
||||
//Perform the connection
|
||||
connected_port = new_port
|
||||
connected_port.connected_device = src
|
||||
connected_port.parent.reconcile_air()
|
||||
|
||||
//Actually enforce the air sharing
|
||||
var/datum/pipe_network/network = connected_port.return_network(src)
|
||||
if(network && !(internal_tank.return_air() in network.gases))
|
||||
network.gases += internal_tank.return_air()
|
||||
network.update = 1
|
||||
log_message("Connected to gas port.")
|
||||
return 1
|
||||
|
||||
@@ -858,15 +854,13 @@ obj/mecha/proc/can_use(mob/user)
|
||||
if(!connected_port)
|
||||
return 0
|
||||
|
||||
var/datum/pipe_network/network = connected_port.return_network(src)
|
||||
if(network)
|
||||
network.gases -= internal_tank.return_air()
|
||||
|
||||
connected_port.connected_device = null
|
||||
connected_port = null
|
||||
src.log_message("Disconnected from gas port.")
|
||||
return 1
|
||||
|
||||
/obj/mecha/portableConnectorReturnAir()
|
||||
return internal_tank.return_air()
|
||||
|
||||
/////////////////////////
|
||||
//////// Verbs ////////
|
||||
@@ -882,7 +876,7 @@ obj/mecha/proc/can_use(mob/user)
|
||||
if(!can_use(usr))
|
||||
return
|
||||
|
||||
var/obj/machinery/atmospherics/portables_connector/possible_port = locate(/obj/machinery/atmospherics/portables_connector/) in loc
|
||||
var/obj/machinery/atmospherics/unary/portables_connector/possible_port = locate(/obj/machinery/atmospherics/unary/portables_connector/) in loc
|
||||
if(possible_port)
|
||||
if(connect(possible_port))
|
||||
src.occupant_message("<span class='notice'>[name] connects to the port.</span>")
|
||||
|
||||
@@ -132,43 +132,40 @@
|
||||
entry_vent = null
|
||||
else if(entry_vent)
|
||||
if(get_dist(src, entry_vent) <= 1)
|
||||
if(entry_vent.network && entry_vent.network.normal_members.len)
|
||||
var/list/vents = list()
|
||||
for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in entry_vent.network.normal_members)
|
||||
vents.Add(temp_vent)
|
||||
if(!vents.len)
|
||||
entry_vent = null
|
||||
return
|
||||
var/obj/machinery/atmospherics/unary/vent_pump/exit_vent = pick(vents)
|
||||
if(prob(50))
|
||||
visible_message("<B>[src] scrambles into the ventillation ducts!</B>", \
|
||||
"<span class='notice'>You hear something squeezing through the ventilation ducts.</span>")
|
||||
|
||||
spawn(rand(20,60))
|
||||
loc = exit_vent
|
||||
var/travel_time = round(get_dist(loc, exit_vent.loc) / 2)
|
||||
spawn(travel_time)
|
||||
|
||||
if(!exit_vent || exit_vent.welded)
|
||||
loc = entry_vent
|
||||
entry_vent = null
|
||||
return
|
||||
|
||||
if(prob(50))
|
||||
audible_message("<span class='notice'>You hear something squeezing through the ventilation ducts.</span>")
|
||||
sleep(travel_time)
|
||||
|
||||
if(!exit_vent || exit_vent.welded)
|
||||
loc = entry_vent
|
||||
entry_vent = null
|
||||
return
|
||||
loc = exit_vent.loc
|
||||
entry_vent = null
|
||||
var/area/new_area = get_area(loc)
|
||||
if(new_area)
|
||||
new_area.Entered(src)
|
||||
else
|
||||
var/list/vents = list()
|
||||
for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in entry_vent.parent.other_atmosmch)
|
||||
vents.Add(temp_vent)
|
||||
if(!vents.len)
|
||||
entry_vent = null
|
||||
return
|
||||
var/obj/machinery/atmospherics/unary/vent_pump/exit_vent = pick(vents)
|
||||
if(prob(50))
|
||||
visible_message("<B>[src] scrambles into the ventillation ducts!</B>", \
|
||||
"<span class='notice'>You hear something squeezing through the ventilation ducts.</span>")
|
||||
|
||||
spawn(rand(20,60))
|
||||
loc = exit_vent
|
||||
var/travel_time = round(get_dist(loc, exit_vent.loc) / 2)
|
||||
spawn(travel_time)
|
||||
|
||||
if(!exit_vent || exit_vent.welded)
|
||||
loc = entry_vent
|
||||
entry_vent = null
|
||||
return
|
||||
|
||||
if(prob(50))
|
||||
audible_message("<span class='notice'>You hear something squeezing through the ventilation ducts.</span>")
|
||||
sleep(travel_time)
|
||||
|
||||
if(!exit_vent || exit_vent.welded)
|
||||
loc = entry_vent
|
||||
entry_vent = null
|
||||
return
|
||||
loc = exit_vent.loc
|
||||
entry_vent = null
|
||||
var/area/new_area = get_area(loc)
|
||||
if(new_area)
|
||||
new_area.Entered(src)
|
||||
//=================
|
||||
|
||||
else if(prob(33))
|
||||
|
||||
@@ -28,8 +28,8 @@
|
||||
/datum/round_event/alien_infestation/start()
|
||||
var/list/vents = list()
|
||||
for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in world)
|
||||
if(temp_vent.loc.z == 1 && !temp_vent.welded && temp_vent.network)
|
||||
if(temp_vent.network.normal_members.len > 20) //Stops Aliens getting stuck in small networks. See: Security, Virology
|
||||
if(temp_vent.loc.z == 1 && !temp_vent.welded)
|
||||
if(temp_vent.parent.other_atmosmch.len > 20) //Stops Aliens getting stuck in small networks. See: Security, Virology
|
||||
vents += temp_vent
|
||||
|
||||
var/list/candidates = get_candidates(BE_ALIEN, ALIEN_AFK_BRACKET)
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
/datum/round_event/spider_infestation/start()
|
||||
var/list/vents = list()
|
||||
for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in world)
|
||||
if(temp_vent.loc.z == 1 && !temp_vent.welded && temp_vent.network)
|
||||
if(temp_vent.network.normal_members.len > 20)
|
||||
if(temp_vent.loc.z == 1 && !temp_vent.welded)
|
||||
if(temp_vent.parent.other_atmosmch.len > 20)
|
||||
vents += temp_vent
|
||||
|
||||
while((spawncount >= 1) && vents.len)
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
/datum/round_event/vent_clog/setup()
|
||||
endWhen = rand(25, 100)
|
||||
for(var/obj/machinery/atmospherics/unary/vent_scrubber/temp_vent in machines)
|
||||
if(temp_vent.loc.z == 1 && temp_vent.network)
|
||||
if(temp_vent.network.normal_members.len > 20)
|
||||
if(temp_vent.loc.z == 1)
|
||||
if(temp_vent.parent.other_atmosmch.len > 20)
|
||||
vents += temp_vent
|
||||
if(!vents.len)
|
||||
return kill()
|
||||
|
||||
Reference in New Issue
Block a user