burn wounds, for real this time (#20542)

* burn wounds

* user feedback

* ready for review

* sean review

* Apply suggestions from code review

Co-authored-by: Farie82 <farie82@users.noreply.github.com>

* surgery fix

* other repair methods

* GDN review

* health scanner feedback

* Update code/game/objects/items/devices/scanners.dm

Co-authored-by: Nathan Winters <100448493+CinnamonSnowball@users.noreply.github.com>

* bodyscanner print out

* Update code/game/machinery/adv_med.dm

---------

Co-authored-by: Farie82 <farie82@users.noreply.github.com>
Co-authored-by: Nathan Winters <100448493+CinnamonSnowball@users.noreply.github.com>
This commit is contained in:
Charlie
2023-04-14 14:58:38 +01:00
committed by GitHub
parent 7293b7ecbd
commit e6085895c1
22 changed files with 107 additions and 47 deletions
+12 -12
View File
@@ -207,7 +207,9 @@ REAGENT SCANNER
to_chat(user, "<span class='warning'>Significant brain damage detected. Subject may have had a concussion.</span>")
else
to_chat(user, "<span class='warning'>Subject has no brain.</span>")
var/broken_bone = FALSE
var/internal_bleed = FALSE
var/burn_wound = FALSE
for(var/name in H.bodyparts_by_name)
var/obj/item/organ/external/e = H.bodyparts_by_name[name]
if(!e)
@@ -216,20 +218,18 @@ REAGENT SCANNER
if(e.status & ORGAN_BROKEN)
if((e.limb_name in list("l_arm", "r_arm", "l_hand", "r_hand", "l_leg", "r_leg", "l_foot", "r_foot")) && !(e.status & ORGAN_SPLINTED))
to_chat(user, "<span class='warning'>Unsecured fracture in subject [limb]. Splinting recommended for transport.</span>")
broken_bone = TRUE
if(e.has_infected_wound())
to_chat(user, "<span class='warning'>Infected wound detected in subject [limb]. Disinfection recommended.</span>")
burn_wound = burn_wound || (e.status & ORGAN_BURNT)
internal_bleed = internal_bleed || (e.status & ORGAN_INT_BLEEDING)
if(broken_bone)
to_chat(user, "<span class='warning'>Bone fractures detected. Advanced scanner required for location.</span>")
if(internal_bleed)
to_chat(user, "<span class='warning'>Internal bleeding detected. Advanced scanner required for location.</span>")
if(burn_wound)
to_chat(user, "<span class='warning'>Critical burn detected. Examine patient's body for location.</span>")
for(var/name in H.bodyparts_by_name)
var/obj/item/organ/external/e = H.bodyparts_by_name[name]
if(!e)
continue
if(e.status & ORGAN_BROKEN)
to_chat(user, "<span class='warning'>Bone fractures detected. Advanced scanner required for location.</span>")
break
for(var/obj/item/organ/external/e in H.bodyparts)
if(e.status & ORGAN_INT_BLEEDING)
to_chat(user, "<span class='warning'>Internal bleeding detected. Advanced scanner required for location.</span>")
break
var/blood_id = H.get_blood_id()
if(blood_id)
if(H.bleed_rate)
@@ -111,6 +111,7 @@
remburn = nremburn
user.visible_message("<span class='green'>[user] [healverb]s the wounds on [H]'s [E.name] with the remaining medication.</span>", \
"<span class='green'>You [healverb] the wounds on [H]'s [E.name] with the remaining medication.</span>" )
return affecting
//Bruise Packs//
@@ -220,6 +221,19 @@
else
to_chat(user, "<span class='warning'>[affecting] is cut open, you'll need more than some ointment!</span>")
/obj/item/stack/medical/ointment/heal(mob/living/M, mob/user)
var/obj/item/organ/external/affecting = ..()
if((affecting.status & ORGAN_BURNT) && !(affecting.status & ORGAN_SALVED))
affecting.status |= ORGAN_SALVED
addtimer(CALLBACK(affecting, TYPE_PROC_REF(/obj/item/organ/external, remove_ointment), heal_burn), 3 MINUTES)
/obj/item/organ/external/proc/remove_ointment(heal_amount) //de-ointmenterized D:
status &= ~ORGAN_SALVED
perma_injury = max(perma_injury - heal_amount, 0)
if(owner)
owner.updatehealth("permanent injury removal")
if(!perma_injury)
fix_burn_wound(update_health = FALSE)
/obj/item/stack/medical/ointment/advanced
name = "advanced burn kit"