diff --git a/code/ATMOSPHERICS/pipes.dm b/code/ATMOSPHERICS/pipes.dm
index c2cfa133de1..f035e75c5da 100644
--- a/code/ATMOSPHERICS/pipes.dm
+++ b/code/ATMOSPHERICS/pipes.dm
@@ -1232,32 +1232,9 @@
if(istype(W, /obj/item/device/pipe_painter))
return
- if(istype(W, /obj/item/device/analyzer) && in_range(user, src))
- for (var/mob/O in viewers(user, null))
- O << "\red [user] has used the analyzer on \icon[icon]"
-
- var/pressure = parent.air.return_pressure()
- var/total_moles = parent.air.total_moles()
-
- user << "\blue Results of analysis of \icon[icon]"
- if (total_moles>0)
- var/o2_concentration = parent.air.oxygen/total_moles
- var/n2_concentration = parent.air.nitrogen/total_moles
- var/co2_concentration = parent.air.carbon_dioxide/total_moles
- var/toxins_concentration = parent.air.toxins/total_moles
-
- var/unknown_concentration = 1-(o2_concentration+n2_concentration+co2_concentration+toxins_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 Toxins: [round(toxins_concentration*100)]%"
- if(unknown_concentration>0.01)
- user << "\red Unknown: [round(unknown_concentration*100)]%"
- user << "\blue Temperature: [round(parent.air.temperature-T0C)]°C"
- else
- user << "\blue Tank is empty!"
+ if(istype(W, /obj/item/device/analyzer))
+ atmosanalyzer_scan(parent.air, user)
+ return
/obj/machinery/atmospherics/pipe/tank/air
name = "Pressure Tank (Air)"
diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm
index 9e2b19b17a5..17a35c9ba7d 100644
--- a/code/__HELPERS/unsorted.dm
+++ b/code/__HELPERS/unsorted.dm
@@ -331,7 +331,32 @@ Turf and target are seperate in case you want to teleport some distance from a t
/proc/format_frequency(var/f)
return "[round(f / 10)].[f % 10]"
+/obj/proc/atmosanalyzer_scan(var/datum/gas_mixture/air_contents, mob/user, var/obj/target = src)
+ var/obj/icon = target
+ user.visible_message("[user] has used the analyzer on \icon[icon] [target].", "You use the analyzer on \icon[icon] [target].")
+ var/pressure = air_contents.return_pressure()
+ var/total_moles = air_contents.total_moles()
+ user << "Results of analysis of \icon[icon] [target]."
+ if(total_moles>0)
+ var/o2_concentration = air_contents.oxygen/total_moles
+ var/n2_concentration = air_contents.nitrogen/total_moles
+ var/co2_concentration = air_contents.carbon_dioxide/total_moles
+ var/plasma_concentration = air_contents.toxins/total_moles
+
+ var/unknown_concentration = 1-(o2_concentration+n2_concentration+co2_concentration+plasma_concentration)
+
+ user << "Pressure: [round(pressure,0.1)] kPa"
+ user << "Nitrogen: [round(n2_concentration*100)] %"
+ user << "Oxygen: [round(o2_concentration*100)] %"
+ user << "CO2: [round(co2_concentration*100)] %"
+ user << "Plasma: [round(plasma_concentration*100)] %"
+ if(unknown_concentration>0.01)
+ user << "Unknown: [round(unknown_concentration*100)] %"
+ user << "Temperature: [round(air_contents.temperature-T0C)] °C"
+ else
+ user << "[target] is empty!"
+ return
//This will update a mob's name, real_name, mind.name, data_core records, pda and id
//Calling this proc without an oldname will only update the mob and skip updating the pda, id and records ~Carn
diff --git a/code/game/machinery/atmoalter/portable_atmospherics.dm b/code/game/machinery/atmoalter/portable_atmospherics.dm
index 1be7ef4b3c3..1e6ce7e1253 100644
--- a/code/game/machinery/atmoalter/portable_atmospherics.dm
+++ b/code/game/machinery/atmoalter/portable_atmospherics.dm
@@ -91,7 +91,6 @@
return 1
/obj/machinery/portable_atmospherics/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob, params)
- var/obj/icon = src
if ((istype(W, /obj/item/weapon/tank) && !( src.destroyed )))
if (src.holding)
return
@@ -123,32 +122,6 @@
return
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()
- var/total_moles = air_contents.total_moles()
-
- user << "\blue Results of analysis of \icon[icon]"
- if (total_moles>0)
- var/o2_concentration = air_contents.oxygen/total_moles
- var/n2_concentration = air_contents.nitrogen/total_moles
- var/co2_concentration = air_contents.carbon_dioxide/total_moles
- var/plasma_concentration = 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(air_contents.temperature-T0C)]°C"
- else
- user << "\blue Tank is empty!"
- else
- user << "\blue Tank is empty!"
- return
+ atmosanalyzer_scan(air_contents, user)
return
diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm
index 388467ac607..2f23f8d47ba 100644
--- a/code/game/objects/items/devices/scanners.dm
+++ b/code/game/objects/items/devices/scanners.dm
@@ -296,9 +296,9 @@ REAGENT SCANNER
w_class = 2.0
flags = CONDUCT
slot_flags = SLOT_BELT
- throwforce = 5
- throw_speed = 4
- throw_range = 20
+ throwforce = 0
+ throw_speed = 3
+ throw_range = 7
m_amt = 30
g_amt = 20
origin_tech = "magnets=1;engineering=1"
@@ -307,9 +307,6 @@ REAGENT SCANNER
if (user.stat)
return
- if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey")
- usr << "\red You don't have the dexterity to do this!"
- return
var/turf/location = user.loc
if (!( istype(location, /turf) ))
@@ -320,11 +317,11 @@ REAGENT SCANNER
var/pressure = environment.return_pressure()
var/total_moles = environment.total_moles()
- user.show_message("\blue Results:", 1)
+ user.show_message("Results:", 1)
if(abs(pressure - ONE_ATMOSPHERE) < 10)
- user.show_message("\blue Pressure: [round(pressure,0.1)] kPa", 1)
+ user.show_message("Pressure: [round(pressure,0.1)] kPa", 1)
else
- user.show_message("\red Pressure: [round(pressure,0.1)] kPa", 1)
+ user.show_message("Pressure: [round(pressure,0.1)] kPa", 1)
if(total_moles)
var/o2_concentration = environment.oxygen/total_moles
var/n2_concentration = environment.nitrogen/total_moles
@@ -333,27 +330,27 @@ REAGENT SCANNER
var/unknown_concentration = 1-(o2_concentration+n2_concentration+co2_concentration+plasma_concentration)
if(abs(n2_concentration - N2STANDARD) < 20)
- user.show_message("\blue Nitrogen: [round(n2_concentration*100)]%", 1)
+ user.show_message("Nitrogen: [round(n2_concentration*100)] %", 1)
else
- user.show_message("\red Nitrogen: [round(n2_concentration*100)]%", 1)
+ user.show_message("Nitrogen: [round(n2_concentration*100)] %", 1)
if(abs(o2_concentration - O2STANDARD) < 2)
- user.show_message("\blue Oxygen: [round(o2_concentration*100)]%", 1)
+ user.show_message("Oxygen: [round(o2_concentration*100)] %", 1)
else
- user.show_message("\red Oxygen: [round(o2_concentration*100)]%", 1)
+ user.show_message("Oxygen: [round(o2_concentration*100)] %", 1)
if(co2_concentration > 0.01)
- user.show_message("\red CO2: [round(co2_concentration*100)]%", 1)
+ user.show_message("CO2: [round(co2_concentration*100)] %", 1)
else
- user.show_message("\blue CO2: [round(co2_concentration*100)]%", 1)
+ user.show_message("CO2: [round(co2_concentration*100)] %", 1)
if(plasma_concentration > 0.01)
- user.show_message("\red Plasma: [round(plasma_concentration*100)]%", 1)
+ user.show_message("Plasma: [round(plasma_concentration*100)] %", 1)
if(unknown_concentration > 0.01)
- user.show_message("\red Unknown: [round(unknown_concentration*100)]%", 1)
+ user.show_message("Unknown: [round(unknown_concentration*100)] %", 1)
- user.show_message("\blue Temperature: [round(environment.temperature-T0C)]°C", 1)
+ user.show_message("Temperature: [round(environment.temperature-T0C)] °C", 1)
src.add_fingerprint(user)
return
diff --git a/code/game/objects/items/weapons/flamethrower.dm b/code/game/objects/items/weapons/flamethrower.dm
index 1df86de4c29..9e81b02d31c 100644
--- a/code/game/objects/items/weapons/flamethrower.dm
+++ b/code/game/objects/items/weapons/flamethrower.dm
@@ -112,31 +112,7 @@
return
if(istype(W, /obj/item/device/analyzer) && ptank)
- var/obj/item/weapon/icon = src
- user.visible_message("[user] has used the analyzer on \icon[icon]")
- var/pressure = ptank.air_contents.return_pressure()
- var/total_moles = ptank.air_contents.total_moles()
-
- user << "\blue Results of analysis of \icon[icon]"
- if(total_moles>0)
- var/o2_concentration = ptank.air_contents.oxygen/total_moles
- var/n2_concentration = ptank.air_contents.nitrogen/total_moles
- var/co2_concentration = ptank.air_contents.carbon_dioxide/total_moles
- var/plasma_concentration = ptank.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(ptank.air_contents.temperature-T0C)]°C"
- else
- user << "\blue Tank is empty!"
- return
+ atmosanalyzer_scan(ptank.air_contents, user)
..()
return
diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm
index 6a977006fb8..624c1c345c0 100644
--- a/code/game/objects/items/weapons/tanks/tanks.dm
+++ b/code/game/objects/items/weapons/tanks/tanks.dm
@@ -80,43 +80,17 @@
/obj/item/weapon/tank/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
..()
- var/obj/icon = src
+ src.add_fingerprint(user)
if (istype(src.loc, /obj/item/assembly))
icon = src.loc
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]"
+ atmosanalyzer_scan(air_contents, user)
- var/pressure = air_contents.return_pressure()
-
- var/total_moles = air_contents.total_moles()
-
- user << "\blue Results of analysis of \icon[icon]"
- if (total_moles>0)
- var/o2_concentration = air_contents.oxygen/total_moles
- var/n2_concentration = air_contents.nitrogen/total_moles
- var/co2_concentration = air_contents.carbon_dioxide/total_moles
- var/plasma_concentration = 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(air_contents.temperature-T0C)]°C"
- else
- user << "\blue Tank is empty!"
- src.add_fingerprint(user)
else if (istype(W,/obj/item/latexballon))
var/obj/item/latexballon/LB = W
LB.blow(src)
- src.add_fingerprint(user)
if(istype(W, /obj/item/device/assembly_holder))
bomb_assemble(W,user)
diff --git a/code/modules/assembly/bomb.dm b/code/modules/assembly/bomb.dm
index 62dd0c0690e..8085fefd999 100644
--- a/code/modules/assembly/bomb.dm
+++ b/code/modules/assembly/bomb.dm
@@ -39,7 +39,7 @@
bombtank.master = null
bombtank = null
- del(src)
+ qdel(src)
return
if((istype(W, /obj/item/weapon/weldingtool) && W:welding))
if(!status)
diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm
index 25df3769d72..c7e96dd4737 100644
--- a/code/modules/power/singularity/collector.dm
+++ b/code/modules/power/singularity/collector.dm
@@ -51,9 +51,11 @@ var/global/list/rad_collectors = list()
/obj/machinery/power/rad_collector/attackby(obj/item/W, mob/user, params)
- if(istype(W, /obj/item/device/analyzer))
- user << "\blue The [W.name] detects that [last_power]W were recently produced."
+ if(istype(W, /obj/item/device/multitool))
+ user << "The [W.name] detects that [last_power]W were recently produced."
return 1
+ else if(istype(W, /obj/item/device/analyzer) && P)
+ atmosanalyzer_scan(P.air_contents, user)
else if(istype(W, /obj/item/weapon/tank/plasma))
if(!src.anchored)
user << "\red The [src] needs to be secured to the floor first."