Skip to content

Commit

Permalink
Medical scans will now show heartbroken status (#6833)
Browse files Browse the repository at this point in the history
# About the pull request

heartbroken patients will now be shown as having a "mycardial rupture"
instead of being marked as permadead
fixes #6743

# Explain why it's good for the game

medical players with low playtime might be confused by the current
reading and could ignore recoverable marines on accident. this will help
them figure out what the marine actually needs to get back up

# Testing Photographs and Procedure
<details>
<summary>Screenshots & Videos</summary>



https://github.com/user-attachments/assets/509121cb-97fc-48d3-a129-f7bfdec06831



</details>


# Changelog
:cl:
fix: Health scans will now display the heartbroken status if applicable.
/:cl:

---------

Co-authored-by: Drathek <[email protected]>
  • Loading branch information
VileBeggar and Drulikar authored Aug 1, 2024
1 parent 807ebaa commit dc81703
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 7 deletions.
4 changes: 2 additions & 2 deletions code/datums/mob_hud.dm
Original file line number Diff line number Diff line change
Expand Up @@ -475,7 +475,7 @@ GLOBAL_LIST_INIT_TYPED(huds, /datum/mob_hud, list(
holder3.icon_state = "huddead"
holder2_set = 1
else
if(heart && (heart.organ_status >= ORGAN_BROKEN && check_tod())) // broken heart icon
if(is_heart_broken()) // broken heart icon
holder.icon_state = "huddeadheart"
if(!holder2_set)
holder2.icon_state = "huddeadheart"
Expand Down Expand Up @@ -784,7 +784,7 @@ GLOBAL_DATUM(hud_icon_hudfocus, /image)
// Vampire Execute HUD
/mob/living/carbon/human/proc/update_execute_hud()
var/image/execute_holder = hud_list[XENO_EXECUTE]

execute_holder.icon_state = "hudblank"
execute_holder.overlays.Cut()

Expand Down
4 changes: 2 additions & 2 deletions code/game/objects/items/devices/defibrillator.dm
Original file line number Diff line number Diff line change
Expand Up @@ -108,13 +108,13 @@
if(ghost && (!check_client || ghost.client) && (!check_can_reenter || ghost.can_reenter_corpse))
return ghost

/mob/living/carbon/human/proc/is_revivable()
/mob/living/carbon/human/proc/is_revivable(ignore_heart = FALSE)
if(isnull(internal_organs_by_name) || isnull(internal_organs_by_name["heart"]))
return FALSE
var/datum/internal_organ/heart/heart = internal_organs_by_name["heart"]
var/obj/limb/head = get_limb("head")

if(chestburst || !head || head.status & LIMB_DESTROYED || !heart || heart.organ_status >= ORGAN_BROKEN || !has_brain() || status_flags & PERMANENTLY_DEAD)
if(chestburst || !head || head.status & LIMB_DESTROYED || !ignore_heart && (!heart || heart.organ_status >= ORGAN_BROKEN) || !has_brain() || status_flags & PERMANENTLY_DEAD)
return FALSE
return TRUE

Expand Down
6 changes: 5 additions & 1 deletion code/modules/mob/living/carbon/human/human.dm
Original file line number Diff line number Diff line change
Expand Up @@ -943,6 +943,11 @@

..()

/// Returns whether this person has a broken heart but is otherwise revivable
/mob/living/carbon/human/proc/is_heart_broken()
var/datum/internal_organ/heart/heart = internal_organs_by_name["heart"]
return heart && heart.organ_status >= ORGAN_BROKEN && check_tod() && is_revivable(ignore_heart = TRUE)

/mob/living/carbon/human/proc/is_lung_ruptured()
var/datum/internal_organ/lungs/L = internal_organs_by_name["lungs"]
return L && L.organ_status >= ORGAN_BRUISED
Expand All @@ -954,7 +959,6 @@
src.custom_pain("You feel a stabbing pain in your chest!", 1)
L.damage = L.min_bruised_damage


/mob/living/carbon/human/get_visible_implants(class = 0)
var/list/visible_objects = list()
for(var/obj/item/W in embedded_items)
Expand Down
1 change: 1 addition & 0 deletions code/modules/mob/living/living_healthscan.dm
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,7 @@ GLOBAL_LIST_INIT(known_implants, subtypesof(/obj/item/implant))

//snowflake :3
data["lung_ruptured"] = human_target_mob.is_lung_ruptured()
data["heart_broken"] = human_target_mob.is_heart_broken()

//shrapnel, limbs, limb damage, limb statflags, cyber limbs
var/core_fracture_detected = FALSE
Expand Down
7 changes: 5 additions & 2 deletions tgui/packages/tgui/interfaces/HealthScan.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ export const HealthScan = (props) => {
hugged,
detail_level,
permadead,
heart_broken,
advice,
species,
holocard,
Expand Down Expand Up @@ -115,9 +116,11 @@ export const HealthScan = (props) => {
<LabeledList.Item label="Condition">
<Box color={permadead ? 'red' : 'green'} bold={1}>
{permadead
? 'Permanently deceased'
? heart_broken
? 'Myocardial rupture, surgical intervention required'
: 'Permanently deceased'
: Synthetic
? 'Central power system shutdown, reboot possible.'
? 'Central power system shutdown, reboot possible'
: 'Cardiac arrest, defibrillation possible'}
</Box>
</LabeledList.Item>
Expand Down

0 comments on commit dc81703

Please sign in to comment.