Merge branch 'master' of https://github.com/Citadel-Station-13/Citadel-Station-13 into Ghommie-cit42
This commit is contained in:
@@ -221,12 +221,16 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
overlay.icon_state = "[current_overlays[PDA_OVERLAY_PAI]][pai.pai ? "" : "_off"]"
|
||||
add_overlay(new /mutable_appearance(overlay))
|
||||
|
||||
/obj/item/pda/MouseDrop(obj/over_object, src_location, over_location)
|
||||
/obj/item/pda/MouseDrop(mob/over, src_location, over_location)
|
||||
var/mob/M = usr
|
||||
if((!istype(over_object, /obj/screen)) && usr.canUseTopic(src))
|
||||
if((M == over) && usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
return attack_self(M)
|
||||
return ..()
|
||||
|
||||
/obj/item/pda/attack_self_tk(mob/user)
|
||||
to_chat(user, "<span class='warning'>The PDA's capacitive touch screen doesn't seem to respond!</span>")
|
||||
return
|
||||
|
||||
/obj/item/pda/interact(mob/user)
|
||||
if(!user.IsAdvancedToolUser())
|
||||
to_chat(user, "<span class='warning'>You don't have the dexterity to do this!</span>")
|
||||
@@ -408,9 +412,9 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
|
||||
if (total_moles)
|
||||
for(var/id in env_gases)
|
||||
var/gas_level = env_gases[id][MOLES]/total_moles
|
||||
var/gas_level = env_gases[id]/total_moles
|
||||
if(gas_level > 0)
|
||||
dat += "[env_gases[id][GAS_META][META_GAS_NAME]]: [round(gas_level*100, 0.01)]%<br>"
|
||||
dat += "[GLOB.meta_gas_names[id]]: [round(gas_level*100, 0.01)]%<br>"
|
||||
|
||||
dat += "Temperature: [round(environment.temperature-T0C)]°C<br>"
|
||||
dat += "<br>"
|
||||
@@ -432,7 +436,7 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
var/mob/living/U = usr
|
||||
//Looking for master was kind of pointless since PDAs don't appear to have one.
|
||||
|
||||
if(usr.canUseTopic(src) && !href_list["close"])
|
||||
if(usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK) && !href_list["close"])
|
||||
add_fingerprint(U)
|
||||
U.set_machine(src)
|
||||
|
||||
@@ -686,7 +690,7 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
|
||||
/obj/item/pda/proc/remove_id()
|
||||
|
||||
if(issilicon(usr) || !usr.canUseTopic(src, BE_CLOSE))
|
||||
if(issilicon(usr) || !usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
return
|
||||
|
||||
if (id)
|
||||
@@ -851,7 +855,7 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
|
||||
/obj/item/pda/proc/remove_pen()
|
||||
|
||||
if(issilicon(usr) || !usr.canUseTopic(src, BE_CLOSE))
|
||||
if(issilicon(usr) || !usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK))
|
||||
return
|
||||
|
||||
if(inserted_item)
|
||||
|
||||
@@ -0,0 +1,127 @@
|
||||
/obj/item/compressionkit
|
||||
name = "bluespace compression kit"
|
||||
desc = "An illegally modified BSRPED, capable of reducing the size of most items."
|
||||
icon = 'icons/obj/tools.dmi'
|
||||
icon_state = "compression_c"
|
||||
item_state = "RPED"
|
||||
lefthand_file = 'icons/mob/inhands/misc/devices_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/misc/devices_righthand.dmi'
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
var/charges = 5
|
||||
// var/damage_multiplier = 0.2 Not in use yet.
|
||||
var/mode = 0
|
||||
|
||||
/obj/item/compressionkit/examine(mob/user)
|
||||
..()
|
||||
to_chat(user, "<span class='notice'>It has [charges] charges left. Recharge with bluespace crystals.</span>")
|
||||
to_chat(user, "<span class='notice'>Use in-hand to swap toggle compress/expand mode (expand mode not yet implemented).</span>")
|
||||
|
||||
/obj/item/compressionkit/attack_self(mob/user)
|
||||
if(mode == 0)
|
||||
mode = 1
|
||||
icon_state = "compression_e"
|
||||
to_chat(user, "<span class='notice'>You switch the compressor to expand mode. This isn't implemented yet, so right now it wont do anything different!</span>")
|
||||
return
|
||||
if(mode == 1)
|
||||
mode = 0
|
||||
icon_state = "compression_c"
|
||||
to_chat(user, "<span class='notice'>You switch the compressor to compress mode. Usage will now reduce the size of objects.</span>")
|
||||
return
|
||||
else
|
||||
mode = 0
|
||||
icon_state = "compression_c"
|
||||
to_chat(user, "<span class='notice'>Some coder cocked up or an admin broke your compressor. It's been set back to compress mode..</span>")
|
||||
|
||||
/obj/item/compressionkit/proc/sparks()
|
||||
var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread
|
||||
s.set_up(5, 1, get_turf(src))
|
||||
s.start()
|
||||
|
||||
/obj/item/compressionkit/suicide_act(mob/living/carbon/M)
|
||||
M.visible_message("<span class='suicide'>[M] is sticking their head in [src] and turning it on! [M.p_theyre(TRUE)] going to compress their own skull!</span>")
|
||||
var/obj/item/bodypart/head = M.get_bodypart("head")
|
||||
if(!head)
|
||||
return
|
||||
var/turf/T = get_turf(M)
|
||||
var/list/organs = M.getorganszone("head") + M.getorganszone("eyes") + M.getorganszone("mouth")
|
||||
for(var/internal_organ in organs)
|
||||
var/obj/item/organ/I = internal_organ
|
||||
I.Remove(M)
|
||||
I.forceMove(T)
|
||||
head.drop_limb()
|
||||
qdel(head)
|
||||
new M.gib_type(T,1,M.get_static_viruses())
|
||||
M.add_splatter_floor(T)
|
||||
playsound(M, 'sound/weapons/flash.ogg', 50, 1)
|
||||
playsound(M, 'sound/effects/splat.ogg', 50, 1)
|
||||
|
||||
return OXYLOSS
|
||||
|
||||
/obj/item/compressionkit/afterattack(atom/target, mob/user, proximity)
|
||||
. = ..()
|
||||
if(!proximity || !target)
|
||||
return
|
||||
else
|
||||
if(charges == 0)
|
||||
playsound(get_turf(src), 'sound/machines/buzz-two.ogg', 50, 1)
|
||||
to_chat(user, "<span class='notice'>The bluespace compression kit is out of charges! Recharge it with bluespace crystals.</span>")
|
||||
return
|
||||
if(istype(target, /obj/item))
|
||||
var/obj/item/O = target
|
||||
if(O.w_class == 1)
|
||||
playsound(get_turf(src), 'sound/machines/buzz-two.ogg', 50, 1)
|
||||
to_chat(user, "<span class='notice'>[target] cannot be compressed smaller!.</span>")
|
||||
return
|
||||
if(O.GetComponent(/datum/component/storage))
|
||||
to_chat(user, "<span class='notice'>You feel like compressing an item that stores other items would be counterproductive.</span>")
|
||||
return
|
||||
if(O.w_class > 1)
|
||||
playsound(get_turf(src), 'sound/weapons/flash.ogg', 50, 1)
|
||||
user.visible_message("<span class='warning'>[user] is compressing [O] with their bluespace compression kit!</span>")
|
||||
if(do_mob(user, O, 40) && charges > 0 && O.w_class > 1)
|
||||
playsound(get_turf(src), 'sound/weapons/emitter2.ogg', 50, 1)
|
||||
sparks()
|
||||
flash_lighting_fx(3, 3, LIGHT_COLOR_CYAN)
|
||||
O.w_class -= 1
|
||||
// O.force_mult -= damage_multiplier
|
||||
charges -= 1
|
||||
to_chat(user, "<span class='notice'>You successfully compress [target]! The compressor now has [charges] charges.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='notice'>Anomalous error. Summon a coder.</span>")
|
||||
|
||||
if(istype(target, /mob/living))
|
||||
var/mob/living/victim = target
|
||||
if(istype(victim, /mob/living/carbon/human))
|
||||
if(user.zone_selected == "groin") // pp smol. There's probably a smarter way to do this but im retarded. If you have a simpler method let me know.
|
||||
var/list/organs = victim.getorganszone("groin")
|
||||
for(var/internal_organ in organs)
|
||||
if(istype(internal_organ, /obj/item/organ/genital/penis))
|
||||
var/obj/item/organ/genital/penis/O = internal_organ
|
||||
playsound(get_turf(src), 'sound/weapons/flash.ogg', 50, 1)
|
||||
victim.visible_message("<span class='warning'>[user] is preparing to shrink [victim]\'s [O.name] with their bluespace compression kit!</span>")
|
||||
if(do_mob(user, victim, 40) && charges > 0 && O.length > 0)
|
||||
victim.visible_message("<span class='warning'>[user] has shrunk [victim]\'s [O.name]!</span>")
|
||||
playsound(get_turf(src), 'sound/weapons/emitter2.ogg', 50, 1)
|
||||
sparks()
|
||||
flash_lighting_fx(3, 3, LIGHT_COLOR_CYAN)
|
||||
charges -= 1
|
||||
O.length -= 5
|
||||
if(O.length < 1)
|
||||
victim.visible_message("<span class='warning'>[user]\'s [O.name] vanishes!</span>")
|
||||
qdel(O) // no pp for you
|
||||
else
|
||||
O.update_size()
|
||||
O.update_appearance()
|
||||
|
||||
|
||||
|
||||
/obj/item/compressionkit/attackby(obj/item/I, mob/user, params)
|
||||
..()
|
||||
if(istype(I, /obj/item/stack/ore/bluespace_crystal))
|
||||
var/obj/item/stack/ore/bluespace_crystal/B = I
|
||||
charges += 2
|
||||
to_chat(user, "<span class='notice'>You insert [I] into [src]. It now has [charges] charges.</span>")
|
||||
if(B.amount > 1)
|
||||
B.amount -= 1
|
||||
else
|
||||
qdel(I)
|
||||
@@ -13,7 +13,8 @@
|
||||
actions_types = list(/datum/action/item_action/toggle_light)
|
||||
var/on = FALSE
|
||||
var/brightness_on = 4 //range of light when on
|
||||
var/flashlight_power = 1 //strength of the light when on
|
||||
var/flashlight_power = 0.8 //strength of the light when on
|
||||
light_color = "#FFCC66"
|
||||
|
||||
/obj/item/flashlight/Initialize()
|
||||
. = ..()
|
||||
@@ -52,7 +53,7 @@
|
||||
add_fingerprint(user)
|
||||
if(istype(M) && on && user.zone_selected in list(BODY_ZONE_PRECISE_EYES, BODY_ZONE_PRECISE_MOUTH))
|
||||
|
||||
if((user.has_trait(TRAIT_CLUMSY) || user.has_trait(TRAIT_DUMB)) && prob(50)) //too dumb to use flashlight properly
|
||||
if((HAS_TRAIT(user, TRAIT_CLUMSY) || HAS_TRAIT(user, TRAIT_DUMB)) && prob(50)) //too dumb to use flashlight properly
|
||||
return ..() //just hit them in the head
|
||||
|
||||
if(!user.IsAdvancedToolUser())
|
||||
@@ -63,7 +64,7 @@
|
||||
to_chat(user, "<span class='warning'>[M] doesn't have a head!</span>")
|
||||
return
|
||||
|
||||
if(flashlight_power < 1)
|
||||
if(flashlight_power < 0.3)
|
||||
to_chat(user, "<span class='warning'>\The [src] isn't bright enough to see anything!</span> ")
|
||||
return
|
||||
|
||||
@@ -86,7 +87,7 @@
|
||||
else
|
||||
user.visible_message("<span class='warning'>[user] directs [src] to [M]'s eyes.</span>", \
|
||||
"<span class='danger'>You direct [src] to [M]'s eyes.</span>")
|
||||
if(M.stat == DEAD || (M.has_trait(TRAIT_BLIND)) || !M.flash_act(visual = 1)) //mob is dead or fully blind
|
||||
if(M.stat == DEAD || (HAS_TRAIT(M, TRAIT_BLIND)) || !M.flash_act(visual = 1)) //mob is dead or fully blind
|
||||
to_chat(user, "<span class='warning'>[M]'s pupils don't react to the light!</span>")
|
||||
else if(M.dna && M.dna.check_mutation(XRAY)) //mob has X-ray vision
|
||||
to_chat(user, "<span class='danger'>[M]'s pupils give an eerie glow!</span>")
|
||||
@@ -168,6 +169,8 @@
|
||||
item_state = ""
|
||||
flags_1 = CONDUCT_1
|
||||
brightness_on = 2
|
||||
light_color = "#FFDDCC"
|
||||
flashlight_power = 0.3
|
||||
var/holo_cooldown = 0
|
||||
|
||||
/obj/item/flashlight/pen/afterattack(atom/target, mob/user, proximity_flag)
|
||||
@@ -204,6 +207,8 @@
|
||||
righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi'
|
||||
force = 9 // Not as good as a stun baton.
|
||||
brightness_on = 5 // A little better than the standard flashlight.
|
||||
light_color = "#CDDDFF"
|
||||
flashlight_power = 0.9
|
||||
hitsound = 'sound/weapons/genhit1.ogg'
|
||||
|
||||
// the desk lamps are a bit special
|
||||
@@ -216,6 +221,7 @@
|
||||
righthand_file = 'icons/mob/inhands/items_righthand.dmi'
|
||||
force = 10
|
||||
brightness_on = 5
|
||||
light_color = "#FFDDBB"
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
flags_1 = CONDUCT_1
|
||||
materials = list()
|
||||
@@ -252,6 +258,7 @@
|
||||
desc = "A red Nanotrasen issued flare. There are instructions on the side, it reads 'pull cord, make light'."
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
brightness_on = 7 // Pretty bright.
|
||||
light_color = "#FA421A"
|
||||
icon_state = "flare"
|
||||
item_state = "flare"
|
||||
actions_types = list()
|
||||
@@ -325,6 +332,7 @@
|
||||
desc = "A torch fashioned from some leaves and a log."
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
brightness_on = 4
|
||||
light_color = "#FAA44B"
|
||||
icon_state = "torch"
|
||||
item_state = "torch"
|
||||
lefthand_file = 'icons/mob/inhands/items_lefthand.dmi'
|
||||
@@ -341,6 +349,8 @@
|
||||
righthand_file = 'icons/mob/inhands/equipment/mining_righthand.dmi'
|
||||
desc = "A mining lantern."
|
||||
brightness_on = 6 // luminosity when on
|
||||
light_color = "#FFAA44"
|
||||
flashlight_power = 0.75
|
||||
|
||||
|
||||
/obj/item/flashlight/slime
|
||||
@@ -354,6 +364,8 @@
|
||||
slot_flags = ITEM_SLOT_BELT
|
||||
materials = list()
|
||||
brightness_on = 6 //luminosity when on
|
||||
light_color = "#FFEEAA"
|
||||
flashlight_power = 0.6
|
||||
|
||||
/obj/item/flashlight/emp
|
||||
var/emp_max_charges = 4
|
||||
@@ -517,6 +529,7 @@
|
||||
icon_state = null
|
||||
light_color = null
|
||||
brightness_on = 0
|
||||
flashlight_power = 1
|
||||
light_range = 0
|
||||
light_power = 10
|
||||
alpha = 0
|
||||
@@ -538,7 +551,6 @@
|
||||
name = "eyelight"
|
||||
desc = "This shouldn't exist outside of someone's head, how are you seeing this?"
|
||||
brightness_on = 15
|
||||
flashlight_power = 1
|
||||
flags_1 = CONDUCT_1
|
||||
item_flags = DROPDEL
|
||||
actions_types = list()
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
/obj/item/syndie_glue
|
||||
name = "bottle of super glue"
|
||||
desc = "A black market brand of high strength adhesive, rarely sold to the public. Do not ingest."
|
||||
icon = 'icons/obj/tools.dmi'
|
||||
icon_state = "glue"
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
var/uses = 1
|
||||
|
||||
/obj/item/syndie_glue/suicide_act(mob/living/carbon/M)
|
||||
return //todo
|
||||
|
||||
/obj/item/syndie_glue/afterattack(atom/target, mob/user, proximity)
|
||||
. = ..()
|
||||
if(!proximity || !target)
|
||||
return
|
||||
else
|
||||
if(uses == 0)
|
||||
to_chat(user, "<span class='warning'>The bottle of glue is empty!</span>")
|
||||
return
|
||||
if(istype(target, /obj/item))
|
||||
var/obj/item/I = target
|
||||
if(I.item_flags & NODROP)
|
||||
to_chat(user, "<span class='warning'>[I] is already sticky!</span>")
|
||||
return
|
||||
uses -= 1
|
||||
I.item_flags |= NODROP
|
||||
I.desc += " It looks sticky."
|
||||
to_chat(user, "<span class='notice'>You smear the [I] with glue, making it incredibly sticky!</span>")
|
||||
if(uses == 0)
|
||||
icon_state = "glue_used"
|
||||
name = "empty bottle of super glue"
|
||||
return
|
||||
@@ -54,7 +54,7 @@
|
||||
/obj/item/instrument/attackby(obj/item/W, mob/user, params)
|
||||
if(istype(W, /obj/item/musicaltuner))
|
||||
var/mob/living/carbon/human/H = user
|
||||
if (H.has_trait(TRAIT_MUSICIAN))
|
||||
if (HAS_TRAIT(H, TRAIT_MUSICIAN))
|
||||
if (!tune_time)
|
||||
H.visible_message("[H] tunes the [src] to perfection!", "<span class='notice'>You tune the [src] to perfection!</span>")
|
||||
tune_time = 300
|
||||
|
||||
@@ -69,7 +69,7 @@
|
||||
if (!user.IsAdvancedToolUser())
|
||||
to_chat(user, "<span class='warning'>You don't have the dexterity to do this!</span>")
|
||||
return
|
||||
if(user.has_trait(TRAIT_NOGUNS))
|
||||
if(HAS_TRAIT(user, TRAIT_NOGUNS))
|
||||
to_chat(user, "<span class='warning'>Your fingers can't press the button!</span>")
|
||||
return
|
||||
if(ishuman(user))
|
||||
|
||||
@@ -95,7 +95,7 @@ SLIME SCANNER
|
||||
/obj/item/healthanalyzer/attack(mob/living/M, mob/living/carbon/human/user)
|
||||
|
||||
// Clumsiness/brain damage check
|
||||
if ((user.has_trait(TRAIT_CLUMSY) || user.has_trait(TRAIT_DUMB)) && prob(50))
|
||||
if ((HAS_TRAIT(user, TRAIT_CLUMSY) || HAS_TRAIT(user, TRAIT_DUMB)) && prob(50))
|
||||
to_chat(user, "<span class='notice'>You stupidly try to analyze the floor's vitals!</span>")
|
||||
user.visible_message("<span class='warning'>[user] has analyzed the floor's vitals!</span>")
|
||||
var/msg = "<span class='info'>*---------*\nAnalyzing results for The floor:\n\tOverall status: <b>Healthy</b>\n"
|
||||
@@ -127,7 +127,7 @@ SLIME SCANNER
|
||||
var/brute_loss = M.getBruteLoss()
|
||||
var/mob_status = (M.stat == DEAD ? "<span class='alert'><b>Deceased</b></span>" : "<b>[round(M.health/M.maxHealth,0.01)*100] % healthy</b>")
|
||||
|
||||
if(M.has_trait(TRAIT_FAKEDEATH) && !advanced)
|
||||
if(HAS_TRAIT(M, TRAIT_FAKEDEATH) && !advanced)
|
||||
mob_status = "<span class='alert'><b>Deceased</b></span>"
|
||||
oxy_loss = max(rand(1, 40), oxy_loss, (300 - (tox_loss + fire_loss + brute_loss))) // Random oxygen loss
|
||||
|
||||
@@ -199,10 +199,10 @@ SLIME SCANNER
|
||||
msg += "\t<span class='info'><b>==EAR STATUS==</b></span>\n"
|
||||
if(istype(ears))
|
||||
var/healthy = TRUE
|
||||
if(C.has_trait(TRAIT_DEAF, GENETIC_MUTATION))
|
||||
if(HAS_TRAIT_FROM(C, TRAIT_DEAF, GENETIC_MUTATION))
|
||||
healthy = FALSE
|
||||
msg += "\t<span class='alert'>Subject is genetically deaf.</span>\n"
|
||||
else if(C.has_trait(TRAIT_DEAF))
|
||||
else if(HAS_TRAIT(C, TRAIT_DEAF))
|
||||
healthy = FALSE
|
||||
msg += "\t<span class='alert'>Subject is deaf.</span>\n"
|
||||
else
|
||||
@@ -220,10 +220,10 @@ SLIME SCANNER
|
||||
msg += "\t<span class='info'><b>==EYE STATUS==</b></span>\n"
|
||||
if(istype(eyes))
|
||||
var/healthy = TRUE
|
||||
if(C.has_trait(TRAIT_BLIND))
|
||||
if(HAS_TRAIT(C, TRAIT_BLIND))
|
||||
msg += "\t<span class='alert'>Subject is blind.</span>\n"
|
||||
healthy = FALSE
|
||||
if(C.has_trait(TRAIT_NEARSIGHT))
|
||||
if(HAS_TRAIT(C, TRAIT_NEARSIGHT))
|
||||
msg += "\t<span class='alert'>Subject is nearsighted.</span>\n"
|
||||
healthy = FALSE
|
||||
if(eyes.eye_damage > 30)
|
||||
@@ -290,7 +290,7 @@ SLIME SCANNER
|
||||
msg += "<span class='info'>Body temperature: [round(M.bodytemperature-T0C,0.1)] °C ([round(M.bodytemperature*1.8-459.67,0.1)] °F)</span>\n"
|
||||
|
||||
// Time of death
|
||||
if(M.tod && (M.stat == DEAD || ((M.has_trait(TRAIT_FAKEDEATH)) && !advanced)))
|
||||
if(M.tod && (M.stat == DEAD || ((HAS_TRAIT(M, TRAIT_FAKEDEATH)) && !advanced)))
|
||||
msg += "<span class='info'>Time of Death:</span> [M.tod]\n"
|
||||
var/tdelta = round(world.time - M.timeofdeath)
|
||||
if(tdelta < (DEFIB_TIME_LIMIT * 10))
|
||||
@@ -428,39 +428,38 @@ SLIME SCANNER
|
||||
if(total_moles)
|
||||
var/list/env_gases = environment.gases
|
||||
|
||||
environment.assert_gases(arglist(GLOB.hardcoded_gases))
|
||||
var/o2_concentration = env_gases[/datum/gas/oxygen][MOLES]/total_moles
|
||||
var/n2_concentration = env_gases[/datum/gas/nitrogen][MOLES]/total_moles
|
||||
var/co2_concentration = env_gases[/datum/gas/carbon_dioxide][MOLES]/total_moles
|
||||
var/plasma_concentration = env_gases[/datum/gas/plasma][MOLES]/total_moles
|
||||
var/o2_concentration = env_gases[/datum/gas/oxygen]/total_moles
|
||||
var/n2_concentration = env_gases[/datum/gas/nitrogen]/total_moles
|
||||
var/co2_concentration = env_gases[/datum/gas/carbon_dioxide]/total_moles
|
||||
var/plasma_concentration = env_gases[/datum/gas/plasma]/total_moles
|
||||
|
||||
if(abs(n2_concentration - N2STANDARD) < 20)
|
||||
to_chat(user, "<span class='info'>Nitrogen: [round(n2_concentration*100, 0.01)] % ([round(env_gases[/datum/gas/nitrogen][MOLES], 0.01)] mol)</span>")
|
||||
to_chat(user, "<span class='info'>Nitrogen: [round(n2_concentration*100, 0.01)] % ([round(env_gases[/datum/gas/nitrogen], 0.01)] mol)</span>")
|
||||
else
|
||||
to_chat(user, "<span class='alert'>Nitrogen: [round(n2_concentration*100, 0.01)] % ([round(env_gases[/datum/gas/nitrogen][MOLES], 0.01)] mol)</span>")
|
||||
to_chat(user, "<span class='alert'>Nitrogen: [round(n2_concentration*100, 0.01)] % ([round(env_gases[/datum/gas/nitrogen], 0.01)] mol)</span>")
|
||||
|
||||
if(abs(o2_concentration - O2STANDARD) < 2)
|
||||
to_chat(user, "<span class='info'>Oxygen: [round(o2_concentration*100, 0.01)] % ([round(env_gases[/datum/gas/oxygen][MOLES], 0.01)] mol)</span>")
|
||||
to_chat(user, "<span class='info'>Oxygen: [round(o2_concentration*100, 0.01)] % ([round(env_gases[/datum/gas/oxygen], 0.01)] mol)</span>")
|
||||
else
|
||||
to_chat(user, "<span class='alert'>Oxygen: [round(o2_concentration*100, 0.01)] % ([round(env_gases[/datum/gas/oxygen][MOLES], 0.01)] mol)</span>")
|
||||
to_chat(user, "<span class='alert'>Oxygen: [round(o2_concentration*100, 0.01)] % ([round(env_gases[/datum/gas/oxygen], 0.01)] mol)</span>")
|
||||
|
||||
if(co2_concentration > 0.01)
|
||||
to_chat(user, "<span class='alert'>CO2: [round(co2_concentration*100, 0.01)] % ([round(env_gases[/datum/gas/carbon_dioxide][MOLES], 0.01)] mol)</span>")
|
||||
to_chat(user, "<span class='alert'>CO2: [round(co2_concentration*100, 0.01)] % ([round(env_gases[/datum/gas/carbon_dioxide], 0.01)] mol)</span>")
|
||||
else
|
||||
to_chat(user, "<span class='info'>CO2: [round(co2_concentration*100, 0.01)] % ([round(env_gases[/datum/gas/carbon_dioxide][MOLES], 0.01)] mol)</span>")
|
||||
to_chat(user, "<span class='info'>CO2: [round(co2_concentration*100, 0.01)] % ([round(env_gases[/datum/gas/carbon_dioxide], 0.01)] mol)</span>")
|
||||
|
||||
if(plasma_concentration > 0.005)
|
||||
to_chat(user, "<span class='alert'>Plasma: [round(plasma_concentration*100, 0.01)] % ([round(env_gases[/datum/gas/plasma][MOLES], 0.01)] mol)</span>")
|
||||
to_chat(user, "<span class='alert'>Plasma: [round(plasma_concentration*100, 0.01)] % ([round(env_gases[/datum/gas/plasma], 0.01)] mol)</span>")
|
||||
else
|
||||
to_chat(user, "<span class='info'>Plasma: [round(plasma_concentration*100, 0.01)] % ([round(env_gases[/datum/gas/plasma][MOLES], 0.01)] mol)</span>")
|
||||
to_chat(user, "<span class='info'>Plasma: [round(plasma_concentration*100, 0.01)] % ([round(env_gases[/datum/gas/plasma], 0.01)] mol)</span>")
|
||||
|
||||
environment.garbage_collect()
|
||||
GAS_GARBAGE_COLLECT(environment.gases)
|
||||
|
||||
for(var/id in env_gases)
|
||||
if(id in GLOB.hardcoded_gases)
|
||||
continue
|
||||
var/gas_concentration = env_gases[id][MOLES]/total_moles
|
||||
to_chat(user, "<span class='alert'>[env_gases[id][GAS_META][META_GAS_NAME]]: [round(gas_concentration*100, 0.01)] % ([round(env_gases[id][MOLES], 0.01)] mol)</span>")
|
||||
var/gas_concentration = env_gases[id]/total_moles
|
||||
to_chat(user, "<span class='alert'>[GLOB.meta_gas_names[id]]: [round(gas_concentration*100, 0.01)] % ([round(env_gases[id], 0.01)] mol)</span>")
|
||||
to_chat(user, "<span class='info'>Temperature: [round(environment.temperature-T0C, 0.01)] °C ([round(environment.temperature, 0.01)] K)</span>")
|
||||
|
||||
/obj/item/analyzer/AltClick(mob/user) //Barometer output for measuring when the next storm happens
|
||||
@@ -550,8 +549,8 @@ SLIME SCANNER
|
||||
|
||||
var/list/cached_gases = air_contents.gases
|
||||
for(var/id in cached_gases)
|
||||
var/gas_concentration = cached_gases[id][MOLES]/total_moles
|
||||
to_chat(user, "<span class='notice'>[cached_gases[id][GAS_META][META_GAS_NAME]]: [round(gas_concentration*100, 0.01)] % ([round(cached_gases[id][MOLES], 0.01)] mol)</span>")
|
||||
var/gas_concentration = cached_gases[id]/total_moles
|
||||
to_chat(user, "<span class='notice'>[GLOB.meta_gas_names[id]]: [round(gas_concentration*100, 0.01)] % ([round(cached_gases[id], 0.01)] mol)</span>")
|
||||
to_chat(user, "<span class='notice'>Temperature: [round(temperature - T0C,0.01)] °C ([round(temperature, 0.01)] K)</span>")
|
||||
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user