mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-23 03:57:13 +01:00
Analyzer Scan Refactor
This commit is contained in:
@@ -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)"
|
||||
|
||||
@@ -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].", "<span class='notice'>You use the analyzer on \icon[icon] [target].</span>")
|
||||
var/pressure = air_contents.return_pressure()
|
||||
var/total_moles = air_contents.total_moles()
|
||||
|
||||
user << "<span class='notice'>Results of analysis of \icon[icon] [target].</span>"
|
||||
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 << "<span class='notice'>Pressure: [round(pressure,0.1)] kPa</span>"
|
||||
user << "<span class='notice'>Nitrogen: [round(n2_concentration*100)] %</span>"
|
||||
user << "<span class='notice'>Oxygen: [round(o2_concentration*100)] %</span>"
|
||||
user << "<span class='notice'>CO2: [round(co2_concentration*100)] %</span>"
|
||||
user << "<span class='notice'>Plasma: [round(plasma_concentration*100)] %</span>"
|
||||
if(unknown_concentration>0.01)
|
||||
user << "<span class='danger'>Unknown: [round(unknown_concentration*100)] %</span>"
|
||||
user << "<span class='notice'>Temperature: [round(air_contents.temperature-T0C)] °C</span>"
|
||||
else
|
||||
user << "<span class='notice'>[target] is empty!</span>"
|
||||
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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 <B>Results:</B>", 1)
|
||||
user.show_message("<span class='info'><B>Results:</B></span>", 1)
|
||||
if(abs(pressure - ONE_ATMOSPHERE) < 10)
|
||||
user.show_message("\blue Pressure: [round(pressure,0.1)] kPa", 1)
|
||||
user.show_message("<span class='info'>Pressure: [round(pressure,0.1)] kPa</span>", 1)
|
||||
else
|
||||
user.show_message("\red Pressure: [round(pressure,0.1)] kPa", 1)
|
||||
user.show_message("<span class='alert'>Pressure: [round(pressure,0.1)] kPa</span>", 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("<span class='info'>Nitrogen: [round(n2_concentration*100)] %</span>", 1)
|
||||
else
|
||||
user.show_message("\red Nitrogen: [round(n2_concentration*100)]%", 1)
|
||||
user.show_message("<span class='alert'>Nitrogen: [round(n2_concentration*100)] %</span>", 1)
|
||||
|
||||
if(abs(o2_concentration - O2STANDARD) < 2)
|
||||
user.show_message("\blue Oxygen: [round(o2_concentration*100)]%", 1)
|
||||
user.show_message("<span class='info'>Oxygen: [round(o2_concentration*100)] %</span>", 1)
|
||||
else
|
||||
user.show_message("\red Oxygen: [round(o2_concentration*100)]%", 1)
|
||||
user.show_message("<span class='alert'>Oxygen: [round(o2_concentration*100)] %</span>", 1)
|
||||
|
||||
if(co2_concentration > 0.01)
|
||||
user.show_message("\red CO2: [round(co2_concentration*100)]%", 1)
|
||||
user.show_message("<span class='alert'>CO2: [round(co2_concentration*100)] %</span>", 1)
|
||||
else
|
||||
user.show_message("\blue CO2: [round(co2_concentration*100)]%", 1)
|
||||
user.show_message("<span class='info'>CO2: [round(co2_concentration*100)] %</span>", 1)
|
||||
|
||||
if(plasma_concentration > 0.01)
|
||||
user.show_message("\red Plasma: [round(plasma_concentration*100)]%", 1)
|
||||
user.show_message("<span class='info'>Plasma: [round(plasma_concentration*100)] %</span>", 1)
|
||||
|
||||
if(unknown_concentration > 0.01)
|
||||
user.show_message("\red Unknown: [round(unknown_concentration*100)]%", 1)
|
||||
user.show_message("<span class='alert'>Unknown: [round(unknown_concentration*100)] %</span>", 1)
|
||||
|
||||
user.show_message("\blue Temperature: [round(environment.temperature-T0C)]°C", 1)
|
||||
user.show_message("<span class='info'>Temperature: [round(environment.temperature-T0C)] °C</span>", 1)
|
||||
|
||||
src.add_fingerprint(user)
|
||||
return
|
||||
|
||||
@@ -112,31 +112,7 @@
|
||||
return
|
||||
|
||||
if(istype(W, /obj/item/device/analyzer) && ptank)
|
||||
var/obj/item/weapon/icon = src
|
||||
user.visible_message("<span class='notice'>[user] has used the analyzer on \icon[icon]</span>")
|
||||
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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 << "<span class='notice'>The [W.name] detects that [last_power]W were recently produced.</span>"
|
||||
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."
|
||||
|
||||
Reference in New Issue
Block a user