diff --git a/code/game/machinery/atmoalter/portable_atmospherics.dm b/code/game/machinery/atmoalter/portable_atmospherics.dm
index 6ccf9901893..f929cc0d5eb 100644
--- a/code/game/machinery/atmoalter/portable_atmospherics.dm
+++ b/code/game/machinery/atmoalter/portable_atmospherics.dm
@@ -106,7 +106,7 @@
user << "\blue Nothing happens."
return
- else if ((istype(W, /obj/item/device/analyzer) || (istype(W, /obj/item/device/pda))) && get_dist(user, src) <= 1)
+ else if ((istype(W, /obj/item/device/analyzer)) && get_dist(user, src) <= 1)
visible_message("\red [user] has used [W] on \icon[icon]")
if(air_contents)
var/pressure = air_contents.return_pressure()
diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm
index bd3d299edad..4fbf492280a 100644
--- a/code/game/objects/items/devices/PDA/PDA.dm
+++ b/code/game/objects/items/devices/PDA/PDA.dm
@@ -167,6 +167,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
icon_state = "pda-bar"
/obj/item/device/pda/atmos
+ default_cartridge = /obj/item/weapon/cartridge/atmos
icon_state = "pda-atmo"
/obj/item/device/pda/chemist
@@ -315,13 +316,15 @@ var/global/list/obj/item/device/pda/PDAs = list()
dat += "
"
if (cartridge)
if (cartridge.access_janitor)
- dat += "
Equipment Locator "
+ dat += "
Custodial Locator "
if (istype(cartridge.radio, /obj/item/radio/integrated/signal))
dat += "
Signaler System "
if (cartridge.access_reagent_scanner)
dat += "
[scanmode == 3 ? "Disable" : "Enable"] Reagent Scanner "
if (cartridge.access_engine)
dat += "
[scanmode == 4 ? "Disable" : "Enable"] Halogen Counter "
+ if (cartridge.access_atmos)
+ dat += "
[scanmode == 5 ? "Disable" : "Enable"] Gas Scanner "
if (cartridge.access_remote_door)
dat += "
Toggle Remote Door "
dat += "
Atmospheric Scan "
@@ -527,6 +530,11 @@ var/global/list/obj/item/device/pda/PDAs = list()
if ( !(last_honk && world.time < last_honk + 20) )
playsound(loc, 'sound/items/bikehorn.ogg', 50, 1)
last_honk = world.time
+ if("Gas Scan")
+ if(scanmode == 5)
+ scanmode = 0
+ else if((!isnull(cartridge)) && (cartridge.access_atmos))
+ scanmode = 5
//MESSENGER/NOTE FUNCTIONS===================================
@@ -956,6 +964,63 @@ var/global/list/obj/item/device/pda/PDAs = list()
else
user << "\blue No significant chemical agents found in [A]."
+ if(5)
+ if((istype(A, /obj/item/weapon/tank)) || (istype(A, /obj/machinery/portable_atmospherics)))
+ var/obj/icon = A
+ for (var/mob/O in viewers(user, null))
+ O << "\red [user] has used [src] on \icon[icon] [A]"
+ var/pressure = A:air_contents.return_pressure()
+
+ var/total_moles = A:air_contents.total_moles()
+
+ user << "\blue Results of analysis of \icon[icon]"
+ if (total_moles>0)
+ var/o2_concentration = A:air_contents.oxygen/total_moles
+ var/n2_concentration = A:air_contents.nitrogen/total_moles
+ var/co2_concentration = A:air_contents.carbon_dioxide/total_moles
+ var/plasma_concentration = A:air_contents.toxins/total_moles
+
+ var/unknown_concentration = 1-(o2_concentration+n2_concentration+co2_concentration+plasma_concentration)
+
+ user << "\blue Pressure: [round(pressure,0.1)] kPa"
+ user << "\blue Nitrogen: [round(n2_concentration*100)]%"
+ user << "\blue Oxygen: [round(o2_concentration*100)]%"
+ user << "\blue CO2: [round(co2_concentration*100)]%"
+ user << "\blue Plasma: [round(plasma_concentration*100)]%"
+ if(unknown_concentration>0.01)
+ user << "\red Unknown: [round(unknown_concentration*100)]%"
+ user << "\blue Temperature: [round(A:air_contents.temperature-T0C)]°C"
+ else
+ user << "\blue Tank is empty!"
+
+ if (istype(A, /obj/machinery/atmospherics/pipe/tank))
+ var/obj/icon = A
+ for (var/mob/O in viewers(user, null))
+ O << "\red [user] has used [src] on \icon[icon] [A]"
+
+ var/pressure = A:parent.air.return_pressure()
+ var/total_moles = A:parent.air.total_moles()
+
+ user << "\blue Results of analysis of \icon[icon]"
+ if (total_moles>0)
+ var/o2_concentration = A:parent.air.oxygen/total_moles
+ var/n2_concentration = A:parent.air.nitrogen/total_moles
+ var/co2_concentration = A:parent.air.carbon_dioxide/total_moles
+ var/plasma_concentration = A:parent.air.toxins/total_moles
+
+ var/unknown_concentration = 1-(o2_concentration+n2_concentration+co2_concentration+plasma_concentration)
+
+ user << "\blue Pressure: [round(pressure,0.1)] kPa"
+ user << "\blue Nitrogen: [round(n2_concentration*100)]%"
+ user << "\blue Oxygen: [round(o2_concentration*100)]%"
+ user << "\blue CO2: [round(co2_concentration*100)]%"
+ user << "\blue Plasma: [round(plasma_concentration*100)]%"
+ if(unknown_concentration>0.01)
+ user << "\red Unknown: [round(unknown_concentration*100)]%"
+ user << "\blue Temperature: [round(A:parent.air.temperature-T0C)]°C"
+ else
+ user << "\blue Tank is empty!"
+
if (!scanmode && istype(A, /obj/item/weapon/paper) && owner)
note = A:info
user << "\blue Paper scanned." //concept of scanning paper copyright brainoblivion 2009
@@ -1105,7 +1170,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
new /obj/item/device/pda(src)
new /obj/item/device/pda(src)
- var/newcart = pick(1,2,3,4)
+ var/newcart = pick(1,2,3,4,5)
switch(newcart)
if(1)
new /obj/item/weapon/cartridge/engineering(src)
@@ -1115,6 +1180,8 @@ var/global/list/obj/item/device/pda/PDAs = list()
new /obj/item/weapon/cartridge/medical(src)
if(4)
new /obj/item/weapon/cartridge/signal/toxins(src)
+ if(5)
+ new /obj/item/weapon/cartridge/quartermaster(src)
new /obj/item/weapon/cartridge/head(src)
diff --git a/code/game/objects/items/devices/PDA/cart.dm b/code/game/objects/items/devices/PDA/cart.dm
index 70b39c425bc..22ba007743c 100644
--- a/code/game/objects/items/devices/PDA/cart.dm
+++ b/code/game/objects/items/devices/PDA/cart.dm
@@ -9,6 +9,7 @@
var/obj/item/radio/integrated/radio = null
var/access_security = 0
var/access_engine = 0
+ var/access_atmos = 0
var/access_medical = 0
var/access_manifest = 0
var/access_clown = 0
@@ -37,6 +38,11 @@
icon_state = "cart-e"
access_engine = 1
+ atmos
+ name = "BreatheDeep Cartridge"
+ icon_state = "cart-a"
+ access_atmos = 1
+
medical
name = "Med-U Cartridge"
icon_state = "cart-m"
@@ -103,6 +109,7 @@
desc = "Complete with integrated radio signaler!"
icon_state = "cart-tox"
access_reagent_scanner = 1
+ access_atmos = 1
New()
..()
@@ -134,6 +141,8 @@
access_manifest = 1
access_status_display = 1
access_quartermaster = 1
+ access_janitor = 1
+ access_security = 1
New()
..()
@@ -158,6 +167,7 @@
access_manifest = 1
access_status_display = 1
access_engine = 1
+ access_atmos = 1
cmo
name = "Med-U DELUXE"
@@ -173,6 +183,7 @@
access_manifest = 1
access_status_display = 1
access_reagent_scanner = 1
+ access_atmos = 1
New()
..()
@@ -189,6 +200,8 @@
access_medical = 1
access_reagent_scanner = 1
access_status_display = 1
+ access_atmos = 1
+ access_janitor = 1
syndicate
name = "Detomatix Cartridge"
diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm
index bab4cff7039..143ff13a041 100644
--- a/code/game/objects/items/weapons/tanks/tanks.dm
+++ b/code/game/objects/items/weapons/tanks/tanks.dm
@@ -81,7 +81,7 @@
if (istype(src.loc, /obj/item/assembly))
icon = src.loc
- if ((istype(W, /obj/item/device/analyzer) || (istype(W, /obj/item/device/pda))) && get_dist(user, src) <= 1)
+ if ((istype(W, /obj/item/device/analyzer)) && get_dist(user, src) <= 1)
for (var/mob/O in viewers(user, null))
O << "\red [user] has used [W] on \icon[icon] [src]"
diff --git a/html/changelog.html b/html/changelog.html
index d97e9866649..5b7270bab9a 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -53,6 +53,7 @@ should be listed in the changelog upon commit tho. Thanks. -->
Ikarrus updated:
- An agent card is now required to use doors and controls on the Syndicate Shuttle (Nuke).
+ - Scanning gas tanks is now a PDA-cart function. Only Atmos and Science PDA carts have this function. Have fun mislabelling gas tanks!
diff --git a/maps/tgstation.2.1.0.dmm b/maps/tgstation.2.1.0.dmm
index d7a91aa1b99..f2242a4c2d9 100644
--- a/maps/tgstation.2.1.0.dmm
+++ b/maps/tgstation.2.1.0.dmm
@@ -5200,8 +5200,8 @@
"bVZ" = (/obj/machinery/status_display,/turf/simulated/wall,/area/engine/break_room)
"bWa" = (/obj/structure/table,/obj/item/clothing/glasses/meson,/turf/simulated/floor,/area/engine/break_room)
"bWb" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/engine/break_room)
-"bWc" = (/obj/structure/table,/obj/item/weapon/paper,/obj/item/weapon/paper{pixel_x = 3; pixel_y = 3},/obj/item/weapon/pen{layer = 4},/turf/simulated/floor,/area/engine/break_room)
-"bWd" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/beer,/turf/simulated/floor,/area/engine/break_room)
+"bWc" = (/obj/structure/table,/obj/item/weapon/paper,/obj/item/weapon/paper{pixel_x = 3; pixel_y = 3},/obj/item/weapon/pen{layer = 4},/turf/simulated/floor{icon_state = "bar"},/area/engine/break_room)
+"bWd" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/beer,/turf/simulated/floor{icon_state = "bar"},/area/engine/break_room)
"bWe" = (/obj/machinery/vending/cigarette,/turf/simulated/floor{icon_state = "bar"},/area/engine/break_room)
"bWf" = (/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/atmos)
"bWg" = (/obj/machinery/requests_console{department = "Atmospherics"; departmentType = 4; name = "Atmos RC"; pixel_x = 30; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple{color = "red"; icon_state = "intact-r"; level = 2},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor,/area/atmos)
@@ -5246,8 +5246,8 @@
"bWT" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{dir = 2; icon_state = "yellowcorner"},/area/hallway/primary/aft)
"bWU" = (/turf/simulated/wall,/area/engine/break_room)
"bWV" = (/obj/machinery/power/apc{dir = 8; name = "Engineering Foyer APC"; pixel_x = -24},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor,/area/engine/break_room)
-"bWW" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/cola{pixel_x = -3},/turf/simulated/floor,/area/engine/break_room)
-"bWX" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/item/weapon/screwdriver{pixel_y = 8},/turf/simulated/floor,/area/engine/break_room)
+"bWW" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/cola{pixel_x = -3},/turf/simulated/floor{icon_state = "bar"},/area/engine/break_room)
+"bWX" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/item/weapon/screwdriver{pixel_y = 8},/turf/simulated/floor{icon_state = "bar"},/area/engine/break_room)
"bWY" = (/obj/machinery/vending/cola,/turf/simulated/floor{icon_state = "bar"},/area/engine/break_room)
"bWZ" = (/obj/structure/closet/wardrobe/atmospherics_yellow,/turf/simulated/floor,/area/atmos)
"bXa" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/space_heater,/turf/simulated/floor{dir = 10; icon_state = "warning"},/area/atmos)
@@ -5527,7 +5527,7 @@
"cco" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office)
"ccp" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/weapon/lighter/zippo,/obj/item/clothing/glasses/meson{pixel_y = 4},/mob/living/simple_animal/parrot/Poly,/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office)
"ccq" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office)
-"ccr" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office)
+"ccr" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/rig/elite,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig/elite,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = ""},/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office)
"ccs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating,/area/engine/chiefs_office)
"cct" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/engine/engineering)
"ccu" = (/turf/simulated/floor,/area/engine/engineering)
@@ -5574,7 +5574,7 @@
"cdj" = (/obj/structure/stool/bed/chair/office/light{dir = 4},/obj/effect/landmark/start{name = "Chief Engineer"},/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office)
"cdk" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/yellow,/obj/item/weapon/stamp/ce,/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office)
"cdl" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office)
-"cdm" = (/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/rig/elite,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/rig/elite,/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office)
+"cdm" = (/obj/structure/closet/secure_closet/engineering_chief{req_access_txt = "0"},/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office)
"cdn" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable,/turf/simulated/floor/plating,/area/engine/chiefs_office)
"cdo" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor,/area/engine/engineering)
"cdp" = (/obj/effect/landmark{name = "lightsout"},/turf/simulated/floor,/area/engine/engineering)
@@ -5608,7 +5608,7 @@
"cdR" = (/obj/structure/filingcabinet/chestdrawer,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/obj/machinery/camera{c_tag = "Chief Engineer's Office"; dir = 4; network = "SS13"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office)
"cdS" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office)
"cdT" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/item/weapon/cigpacket,/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office)
-"cdU" = (/obj/structure/closet/secure_closet/engineering_chief{req_access_txt = "0"},/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office)
+"cdU" = (/obj/structure/table/reinforced,/obj/item/stack/medical/bruise_pack{pixel_x = -3; pixel_y = 2},/obj/item/weapon/reagent_containers/pill/kelotane{pixel_x = -3; pixel_y = -8},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office)
"cdV" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Engineering"; name = "Engineering Security Doors"; opacity = 0},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/engine/engineering)
"cdW" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/grille,/obj/machinery/meter,/turf/simulated/wall/r_wall,/area/atmos)
"cdX" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/grille,/obj/machinery/meter{frequency = 1443; id = "mair_in_meter"; name = "Mixed Air Tank In"},/turf/simulated/wall/r_wall,/area/atmos)
@@ -5629,7 +5629,7 @@
"cem" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office)
"cen" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office)
"ceo" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office)
-"cep" = (/obj/item/weapon/cartridge/engineering{pixel_x = 4; pixel_y = 5},/obj/item/weapon/cartridge/engineering{pixel_x = -3; pixel_y = 2},/obj/item/weapon/cartridge/engineering{pixel_x = 3},/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/pill/kelotane{pixel_x = -3; pixel_y = -8},/obj/item/stack/medical/bruise_pack{pixel_x = -3; pixel_y = 2},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/machinery/light_switch{pixel_x = 27},/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office)
+"cep" = (/obj/item/weapon/cartridge/engineering{pixel_x = 4; pixel_y = 5},/obj/item/weapon/cartridge/engineering{pixel_x = -3; pixel_y = 2},/obj/item/weapon/cartridge/engineering{pixel_x = 3},/obj/structure/table/reinforced,/obj/machinery/light_switch{pixel_x = 27},/obj/item/weapon/cartridge/atmos,/turf/simulated/floor{dir = 8; icon_state = "neutralfull"},/area/engine/chiefs_office)
"ceq" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/engine/engineering)
"cer" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 0},/turf/simulated/wall/r_wall,/area/engine/engineering)
"ces" = (/obj/machinery/atmospherics/unary/outlet_injector{dir = 1; frequency = 1441; icon_state = "on"; id = "n2_in"; on = 1},/turf/simulated/floor/engine{name = "n2 floor"; nitrogen = 100000; oxygen = 0},/area/atmos)