mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2025-12-29 03:21:30 +00:00
Stethoscope Examine Quality of Life (#13856)
This commit is contained in:
@@ -207,14 +207,17 @@
|
||||
/obj/item/clothing/accessory/stethoscope
|
||||
name = "stethoscope"
|
||||
desc = "An outdated medical apparatus for listening to the sounds of the human body. It also makes you look like you know what you're doing."
|
||||
desc_info = "Click on the UI action button toggle between the examination modes. Automatic will use the stethoscope on the person you're \
|
||||
examining when adjacent to them, automatically using it on the selected body part. Manual will make it so you don't automatically use it via examine."
|
||||
icon_state = "stethoscope"
|
||||
item_icons = list(
|
||||
slot_l_hand_str = 'icons/mob/items/lefthand_medical.dmi',
|
||||
slot_r_hand_str = 'icons/mob/items/righthand_medical.dmi',
|
||||
)
|
||||
flippable = 1
|
||||
var/auto_examine = FALSE
|
||||
|
||||
/obj/item/clothing/accessory/stethoscope/attack(mob/living/carbon/human/M, mob/living/user)
|
||||
/obj/item/clothing/accessory/stethoscope/attack(mob/living/carbon/human/M, mob/user)
|
||||
if(ishuman(M) && isliving(user))
|
||||
if(user.a_intent == I_HELP)
|
||||
var/obj/item/organ/organ = M.get_organ(user.zone_sel.selecting)
|
||||
@@ -224,6 +227,38 @@
|
||||
return
|
||||
return ..(M,user)
|
||||
|
||||
/obj/item/clothing/accessory/stethoscope/attack_self(mob/user)
|
||||
toggle_examine()
|
||||
|
||||
/obj/item/clothing/accessory/stethoscope/on_attached(obj/item/clothing/S, mob/user)
|
||||
..()
|
||||
has_suit.verbs += /obj/item/clothing/accessory/stethoscope/verb/toggle_examine
|
||||
|
||||
/obj/item/clothing/accessory/stethoscope/on_removed(mob/user)
|
||||
if(has_suit)
|
||||
has_suit.verbs -= /obj/item/clothing/accessory/stethoscope/verb/toggle_examine
|
||||
..()
|
||||
|
||||
/obj/item/clothing/accessory/stethoscope/proc/mode_switch(mob/user)
|
||||
auto_examine = !auto_examine
|
||||
to_chat(user, SPAN_NOTICE("\The [src]'s Examination Mode is now [auto_examine ? "Automatic" : "Manual"]."))
|
||||
|
||||
/obj/item/clothing/accessory/stethoscope/verb/toggle_examine()
|
||||
set name = "Toggle Examination Mode"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
|
||||
if(!ishuman(usr))
|
||||
return
|
||||
if(usr.incapacitated())
|
||||
return
|
||||
|
||||
var/obj/item/clothing/accessory/stethoscope/stet = get_accessory(/obj/item/clothing/accessory/stethoscope)
|
||||
if(!stet)
|
||||
return
|
||||
|
||||
stet.mode_switch(usr)
|
||||
|
||||
//Religious items
|
||||
/obj/item/clothing/accessory/rosary
|
||||
name = "rosary"
|
||||
|
||||
@@ -14,6 +14,27 @@
|
||||
skipitems |= C.flags_inv
|
||||
return skipitems
|
||||
|
||||
/mob/living/carbon/human/proc/examine_pulse(mob/user)
|
||||
if(user.stat || user.incapacitated() || !ishuman(user))
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(H.has_stethoscope_active())
|
||||
var/obj/item/organ/organ = src.get_organ(user.zone_sel.selecting)
|
||||
if(organ)
|
||||
user.visible_message("<b>[user]</b> checks [src] with a stethoscope.", "You check [src] with the stethoscope on your person.")
|
||||
to_chat(user, SPAN_NOTICE("You place the stethoscope against [src]'s [organ.name]. You hear <b>[english_list(organ.listen())]</b>."))
|
||||
else
|
||||
to_chat(user, SPAN_WARNING("[src] is missing that limb!"))
|
||||
|
||||
else if(src.stat && !(src.species.flags & NO_BLOOD))
|
||||
user.visible_message("<b>[user]</b> checks [src]'s pulse.", "You check [src]'s pulse.")
|
||||
if(do_mob(user, src, 15))
|
||||
if(pulse() == PULSE_NONE || (status_flags & FAKEDEATH))
|
||||
to_chat(user, "<span class='deadsay'>[get_pronoun("He")] [get_pronoun("has")] no pulse.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='deadsay'>[get_pronoun("He")] [get_pronoun("has")] a pulse!</span>")
|
||||
|
||||
/mob/living/carbon/human/examine(mob/user)
|
||||
var/skipbody = get_covered_body_parts()
|
||||
var/skipbody_thick = get_covered_body_parts(TRUE)
|
||||
@@ -223,18 +244,11 @@
|
||||
var/distance = get_dist(user,src)
|
||||
if(istype(user, /mob/abstract/observer) || user.stat == 2) // ghosts can see anything
|
||||
distance = 1
|
||||
if (src.stat && !(src.species.flags & NO_BLOOD)) // No point checking pulse of a species that doesn't have one.
|
||||
|
||||
if(src.stat && !(src.species.flags & NO_BLOOD)) // No point checking pulse of a species that doesn't have one.
|
||||
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("is")]n't responding to anything around [get_pronoun("him")] and seems to be unconscious.</span>\n"
|
||||
if((stat == DEAD || is_asystole() || src.losebreath) && distance <= 3 || (status_flags & FAKEDEATH))
|
||||
msg += "<span class='warning'>[get_pronoun("He")] [get_pronoun("does")] not appear to be breathing.</span>\n"
|
||||
if(istype(user, /mob/living/carbon/human) && !user.stat && Adjacent(user))
|
||||
spawn (0)
|
||||
user.visible_message("<b>[user]</b> checks [src]'s pulse.", "You check [src]'s pulse.")
|
||||
if (do_mob(user, src, 15))
|
||||
if(pulse() == PULSE_NONE || (status_flags & FAKEDEATH))
|
||||
to_chat(user, "<span class='deadsay'>[get_pronoun("He")] [get_pronoun("has")] no pulse.</span>")
|
||||
else
|
||||
to_chat(user, "<span class='deadsay'>[get_pronoun("He")] [get_pronoun("has")] a pulse!</span>")
|
||||
|
||||
else if (src.stat)
|
||||
msg += SPAN_WARNING("[get_pronoun("He")] [get_pronoun("is")] not responding to anything around [get_pronoun("him")].\n")
|
||||
@@ -389,6 +403,8 @@
|
||||
msg += "\n[get_pronoun("He")] [pose]"
|
||||
|
||||
to_chat(user, msg.Join())
|
||||
if(Adjacent(user))
|
||||
INVOKE_ASYNC(src, .proc/examine_pulse, user)
|
||||
|
||||
//Helper procedure. Called by /mob/living/carbon/human/examine() and /mob/living/carbon/human/Topic() to determine HUD access to security and medical records.
|
||||
/proc/hasHUD(mob/M, hudtype)
|
||||
|
||||
@@ -220,6 +220,21 @@
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/mob/living/carbon/human/proc/has_stethoscope_active()
|
||||
var/obj/item/clothing/under/uniform = w_uniform
|
||||
var/obj/item/clothing/suit/suit = wear_suit
|
||||
if(suit)
|
||||
var/obj/item/clothing/accessory/stethoscope/stet = locate() in suit.accessories
|
||||
if(stet)
|
||||
if(stet.auto_examine)
|
||||
return TRUE
|
||||
if(uniform)
|
||||
var/obj/item/clothing/accessory/stethoscope/stet = locate() in uniform.accessories
|
||||
if(stet)
|
||||
if(stet.auto_examine)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/mob/living/carbon/human/proc/is_submerged()
|
||||
if(lying && istype(loc, /turf/simulated/floor/beach/water)) // replace this when we port fluids
|
||||
return TRUE
|
||||
|
||||
Reference in New Issue
Block a user