From 43ca94113e022ebec2242fff6309f0cf6b516b69 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Wed, 15 Nov 2023 01:37:50 +0100 Subject: [PATCH] [MIRROR] Heart code cleanup [MDB IGNORE] (#25019) * Heart code cleanup (#79602) ## About The Pull Request General clean up of heart code. - Use `Stop` and `Restart` in `set_heart_attack` - Use `SEND_SOUND()` rather than `playsound_local` for heartbeats - Use `update_icon_blocker` - Correctly ensures ethereal hearts get their overlay - Adds heartbeat animation to ethereal hearts ## Changelog :cl: Melbert code: General heart code cleanup. fix: Heartbeat sound effects are no longer sourced to the exact tile you fell into crit at fix: Abductors glands are less likely to become invisible or look wrong fix: Ethereal hearts are less likely to become invisible or look wrong, and now properly spawn with their shine overlay image: Adds heartbeat animation to beating Ethereal Hearts /:cl: * Heart code cleanup --------- Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> --- .../dna_infuser/organ_sets/fly_organs.dm | 5 +- .../antagonists/abductor/equipment/gland.dm | 8 +- .../antagonists/nightmare/nightmare_organs.dm | 8 +- code/modules/clothing/neck/_neck.dm | 4 +- code/modules/mob/living/carbon/human/death.dm | 5 +- code/modules/mob/living/carbon/life.dm | 15 ++- .../internal/appendix/appendix_golem.dm | 2 +- .../surgery/organs/internal/heart/_heart.dm | 115 +++++++++++------- .../organs/internal/heart/heart_ethereal.dm | 10 +- icons/obj/medical/organs/organs.dmi | Bin 36885 -> 37579 bytes 10 files changed, 101 insertions(+), 71 deletions(-) diff --git a/code/game/machinery/dna_infuser/organ_sets/fly_organs.dm b/code/game/machinery/dna_infuser/organ_sets/fly_organs.dm index 5d4568a535c..e7551394131 100644 --- a/code/game/machinery/dna_infuser/organ_sets/fly_organs.dm +++ b/code/game/machinery/dna_infuser/organ_sets/fly_organs.dm @@ -78,10 +78,7 @@ name = odd_organ_name() icon_state = FLY_INFUSED_ORGAN_ICON AddElement(/datum/element/organ_set_bonus, /datum/status_effect/organ_set_bonus/fly) - -/obj/item/organ/internal/heart/fly/update_icon_state() - SHOULD_CALL_PARENT(FALSE) - return //don't set icon thank you + AddElement(/datum/element/update_icon_blocker) /obj/item/organ/internal/lungs/fly desc = FLY_INFUSED_ORGAN_DESC diff --git a/code/modules/antagonists/abductor/equipment/gland.dm b/code/modules/antagonists/abductor/equipment/gland.dm index c1dcf68b9df..e29388c9fd6 100644 --- a/code/modules/antagonists/abductor/equipment/gland.dm +++ b/code/modules/antagonists/abductor/equipment/gland.dm @@ -4,7 +4,6 @@ icon = 'icons/obj/antags/abductor.dmi' icon_state = "gland" organ_flags = ORGAN_ROBOTIC // weird? - beating = TRUE /// Shows name of the gland as well as a description of what it does upon examination by abductor scientists and observers. var/abductor_hint = "baseline placebo referencer" @@ -26,12 +25,16 @@ /obj/item/organ/internal/heart/gland/Initialize(mapload) . = ..() icon_state = pick(list("health", "spider", "slime", "emp", "species", "egg", "vent", "mindshock", "viral")) + AddElement(/datum/element/update_icon_blocker) /obj/item/organ/internal/heart/gland/examine(mob/user) . = ..() if(HAS_MIND_TRAIT(user, TRAIT_ABDUCTOR_SCIENTIST_TRAINING) || isobserver(user)) . += span_notice("It is \a [abductor_hint]") +/obj/item/organ/internal/heart/gland/Stop() + return FALSE + /obj/item/organ/internal/heart/gland/proc/ownerCheck() if(ishuman(owner)) return TRUE @@ -102,9 +105,6 @@ update_gland_hud() /obj/item/organ/internal/heart/gland/on_life(seconds_per_tick, times_fired) - if(!beating) - // alien glands are immune to stopping. - beating = TRUE if(!active) return if(!ownerCheck()) diff --git a/code/modules/antagonists/nightmare/nightmare_organs.dm b/code/modules/antagonists/nightmare/nightmare_organs.dm index 1e07ddc6941..ce5ff427a21 100644 --- a/code/modules/antagonists/nightmare/nightmare_organs.dm +++ b/code/modules/antagonists/nightmare/nightmare_organs.dm @@ -50,8 +50,8 @@ /obj/item/organ/internal/heart/nightmare name = "heart of darkness" desc = "An alien organ that twists and writhes when exposed to light." - icon = 'icons/obj/medical/organs/organs.dmi' icon_state = "demon_heart-on" + base_icon_state = "demon_heart" visual = TRUE color = "#1C1C1C" decay_factor = 0 @@ -60,10 +60,6 @@ /// The armblade granted to the host of this heart. var/obj/item/light_eater/blade -/obj/item/organ/internal/heart/nightmare/Initialize(mapload) - AddElement(/datum/element/update_icon_blocker) - return ..() - /obj/item/organ/internal/heart/nightmare/attack(mob/M, mob/living/carbon/user, obj/target) if(M != user) return ..() @@ -94,7 +90,7 @@ QDEL_NULL(blade) /obj/item/organ/internal/heart/nightmare/Stop() - return 0 + return FALSE /obj/item/organ/internal/heart/nightmare/on_death(seconds_per_tick, times_fired) if(!owner) diff --git a/code/modules/clothing/neck/_neck.dm b/code/modules/clothing/neck/_neck.dm index 3b03f129008..cb0170691ae 100644 --- a/code/modules/clothing/neck/_neck.dm +++ b/code/modules/clothing/neck/_neck.dm @@ -237,7 +237,7 @@ //assess heart if(body_part == BODY_ZONE_CHEST)//if we're listening to the chest - if(isnull(heart) || !heart.beating || carbon_patient.stat == DEAD) + if(isnull(heart) || !heart.is_beating() || carbon_patient.stat == DEAD) render_list += "You don't hear a heartbeat!\n"//they're dead or their heart isn't beating else if(heart.damage > 10 || carbon_patient.blood_volume <= BLOOD_VOLUME_OKAY) render_list += "You hear a weak heartbeat.\n"//their heart is damaged, or they have critical blood @@ -289,7 +289,7 @@ user.visible_message(span_notice("[user] presses their fingers against [carbon_patient]'s [body_part]."), ignored_mobs = user) //assess pulse (heart & blood level) - if(isnull(heart) || !heart.beating || carbon_patient.blood_volume <= BLOOD_VOLUME_OKAY || carbon_patient.stat == DEAD) + if(isnull(heart) || !heart.is_beating() || carbon_patient.blood_volume <= BLOOD_VOLUME_OKAY || carbon_patient.stat == DEAD) render_list += "You can't find a pulse!\n"//they're dead, their heart isn't beating, or they have critical blood else if(heart.damage > 10) diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 3de70b2e01d..333782f0bbe 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -21,9 +21,8 @@ GLOBAL_LIST_EMPTY(dead_players_during_shift) if(stat == DEAD) return stop_sound_channel(CHANNEL_HEARTBEAT) - var/obj/item/organ/internal/heart/H = get_organ_slot(ORGAN_SLOT_HEART) - if(H) - H.beat = BEAT_NONE + var/obj/item/organ/internal/heart/human_heart = get_organ_slot(ORGAN_SLOT_HEART) + human_heart?.beat = BEAT_NONE . = ..() diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index 353b8de7bd7..e9adeb2728e 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -805,12 +805,19 @@ */ /mob/living/carbon/proc/undergoing_cardiac_arrest() var/obj/item/organ/internal/heart/heart = get_organ_slot(ORGAN_SLOT_HEART) - if(istype(heart) && heart.beating) + if(istype(heart) && heart.is_beating()) return FALSE else if(!needs_heart()) return FALSE return TRUE +/** + * Causes the mob to either start or stop having a heart attack. + * + * status - Pass TRUE to start a heart attack, or FALSE to stop one. + * + * Returns TRUE if heart status was changed (heart attack -> no heart attack, or visa versa) + */ /mob/living/carbon/proc/set_heartattack(status) if(!can_heartattack()) return FALSE @@ -819,5 +826,7 @@ if(!istype(heart)) return FALSE - heart.beating = !status - return TRUE + if(status) + return heart.Stop() + + return heart.Restart() diff --git a/code/modules/surgery/organs/internal/appendix/appendix_golem.dm b/code/modules/surgery/organs/internal/appendix/appendix_golem.dm index 03b076b1b2a..ede8dfa1e6b 100644 --- a/code/modules/surgery/organs/internal/appendix/appendix_golem.dm +++ b/code/modules/surgery/organs/internal/appendix/appendix_golem.dm @@ -2,7 +2,7 @@ /obj/item/organ/internal/appendix/golem name = "internal forge" desc = "This expanded digestive chamber allows golems to smelt minerals, provided that they are immersed in lava." - icon_state = "ethereal_heart" + icon_state = "ethereal_heart-off" color = COLOR_GOLEM_GRAY organ_flags = ORGAN_MINERAL /// Action which performs smelting diff --git a/code/modules/surgery/organs/internal/heart/_heart.dm b/code/modules/surgery/organs/internal/heart/_heart.dm index fb97ca7eda0..8a5646d1814 100644 --- a/code/modules/surgery/organs/internal/heart/_heart.dm +++ b/code/modules/surgery/organs/internal/heart/_heart.dm @@ -10,54 +10,84 @@ healing_factor = STANDARD_ORGAN_HEALING decay_factor = 2.5 * STANDARD_ORGAN_DECAY //designed to fail around 6 minutes after death - low_threshold_passed = "Prickles of pain appear then die out from within your chest..." - high_threshold_passed = "Something inside your chest hurts, and the pain isn't subsiding. You notice yourself breathing far faster than before." - now_fixed = "Your heart begins to beat again." - high_threshold_cleared = "The pain in your chest has died down, and your breathing becomes more relaxed." + low_threshold_passed = span_info("Prickles of pain appear then die out from within your chest...") + high_threshold_passed = span_warning("Something inside your chest hurts, and the pain isn't subsiding. You notice yourself breathing far faster than before.") + now_fixed = span_info("Your heart begins to beat again.") + high_threshold_cleared = span_info("The pain in your chest has died down, and your breathing becomes more relaxed.") - // Heart attack code is in code/modules/mob/living/carbon/human/life.dm - var/beating = TRUE attack_verb_continuous = list("beats", "thumps") attack_verb_simple = list("beat", "thump") - var/beat = BEAT_NONE//is this mob having a heatbeat sound played? if so, which? - var/failed = FALSE //to prevent constantly running failing code - var/operated = FALSE //whether the heart's been operated on to fix some of its damages + + // Heart attack code is in code/modules/mob/living/carbon/human/life.dm + + /// Whether the heart is currently beating. + /// Do not set this directly. Use Restart() and Stop() instead. + VAR_PRIVATE/beating = TRUE + + /// is this mob having a heatbeat sound played? if so, which? + var/beat = BEAT_NONE + /// whether the heart's been operated on to fix some of its damages + var/operated = FALSE /obj/item/organ/internal/heart/update_icon_state() + . = ..() icon_state = "[base_icon_state]-[beating ? "on" : "off"]" - return ..() /obj/item/organ/internal/heart/Remove(mob/living/carbon/heartless, special = 0) . = ..() if(!special) - addtimer(CALLBACK(src, PROC_REF(stop_if_unowned)), 120) + addtimer(CALLBACK(src, PROC_REF(stop_if_unowned)), 12 SECONDS) + beat = BEAT_NONE + owner?.stop_sound_channel(CHANNEL_HEARTBEAT) /obj/item/organ/internal/heart/proc/stop_if_unowned() - if(!owner) + if(QDELETED(src)) + return + if(IS_ROBOTIC_ORGAN(src)) + return + if(isnull(owner)) Stop() /obj/item/organ/internal/heart/attack_self(mob/user) - ..() + . = ..() + if(.) + return + if(!beating) - user.visible_message("[user] squeezes [src] to \ - make it beat again!",span_notice("You squeeze [src] to make it beat again!")) + user.visible_message( + span_notice("[user] squeezes [src] to make it beat again!"), + span_notice("You squeeze [src] to make it beat again!"), + ) Restart() - addtimer(CALLBACK(src, PROC_REF(stop_if_unowned)), 80) + addtimer(CALLBACK(src, PROC_REF(stop_if_unowned)), 8 SECONDS) + return TRUE /obj/item/organ/internal/heart/proc/Stop() + if(!beating) + return FALSE + beating = FALSE update_appearance() + beat = BEAT_NONE + owner?.stop_sound_channel(CHANNEL_HEARTBEAT) return TRUE /obj/item/organ/internal/heart/proc/Restart() + if(beating) + return FALSE + beating = TRUE update_appearance() return TRUE /obj/item/organ/internal/heart/OnEatFrom(eater, feeder) . = ..() - beating = FALSE - update_appearance() + Stop() + +/// Checks if the heart is beating. +/// Can be overridden to add more conditions for more complex hearts. +/obj/item/organ/internal/heart/proc/is_beating() + return beating /obj/item/organ/internal/heart/on_life(seconds_per_tick, times_fired) ..() @@ -66,34 +96,32 @@ if(!owner.needs_heart()) return - if(owner.client && beating) - failed = FALSE - var/sound/slowbeat = sound('sound/health/slowbeat.ogg', repeat = TRUE) - var/sound/fastbeat = sound('sound/health/fastbeat.ogg', repeat = TRUE) + // Handle "sudden" heart attack + if(!beating || (organ_flags & ORGAN_FAILING)) + if(owner.can_heartattack() && Stop()) + if(owner.stat == CONSCIOUS) + owner.visible_message(span_danger("[owner] clutches at [owner.p_their()] chest as if [owner.p_their()] heart is stopping!")) + to_chat(owner, span_userdanger("You feel a terrible pain in your chest, as if your heart has stopped!")) + return + + // Beyond deals with sound effects, so nothing needs to be done if no client + if(isnull(owner.client)) + return - if(owner.health <= owner.crit_threshold && beat != BEAT_SLOW) + if(owner.stat == SOFT_CRIT) + if(beat != BEAT_SLOW) beat = BEAT_SLOW - owner.playsound_local(get_turf(owner), slowbeat, 40, 0, channel = CHANNEL_HEARTBEAT, use_reverb = FALSE) to_chat(owner, span_notice("You feel your heart slow down...")) - if(beat == BEAT_SLOW && owner.health > owner.crit_threshold) - owner.stop_sound_channel(CHANNEL_HEARTBEAT) - beat = BEAT_NONE - - if(owner.has_status_effect(/datum/status_effect/jitter)) - if(owner.health > HEALTH_THRESHOLD_FULLCRIT && (!beat || beat == BEAT_SLOW)) - owner.playsound_local(get_turf(owner), fastbeat, 40, 0, channel = CHANNEL_HEARTBEAT, use_reverb = FALSE) - beat = BEAT_FAST - - else if(beat == BEAT_FAST) - owner.stop_sound_channel(CHANNEL_HEARTBEAT) - beat = BEAT_NONE - - if(organ_flags & ORGAN_FAILING && owner.can_heartattack() && !(HAS_TRAIT(src, TRAIT_STABLEHEART))) //heart broke, stopped beating, death imminent... unless you have veins that pump blood without a heart - if(owner.stat == CONSCIOUS) - owner.visible_message(span_danger("[owner] clutches at [owner.p_their()] chest as if [owner.p_their()] heart is stopping!"), \ - span_userdanger("You feel a terrible pain in your chest, as if your heart has stopped!")) - owner.set_heartattack(TRUE) - failed = TRUE + SEND_SOUND(owner, sound('sound/health/slowbeat.ogg', repeat = TRUE, channel = CHANNEL_HEARTBEAT, volume = 40)) + + else if(owner.stat == HARD_CRIT) + if(beat != BEAT_FAST && owner.has_status_effect(/datum/status_effect/jitter)) + SEND_SOUND(owner, sound('sound/health/fastbeat.ogg', repeat = TRUE, channel = CHANNEL_HEARTBEAT, volume = 40)) + beat = BEAT_FAST + + else if(beat == BEAT_SLOW) + owner.stop_sound_channel(CHANNEL_HEARTBEAT) + beat = BEAT_NONE /obj/item/organ/internal/heart/get_availability(datum/species/owner_species, mob/living/owner_mob) return owner_species.mutantheart @@ -222,4 +250,3 @@ owner.heal_overall_damage(brute = 15, burn = 15, required_bodytype = BODYTYPE_ORGANIC) if(owner.reagents.get_reagent_amount(/datum/reagent/medicine/ephedrine) < 20) owner.reagents.add_reagent(/datum/reagent/medicine/ephedrine, 10) - diff --git a/code/modules/surgery/organs/internal/heart/heart_ethereal.dm b/code/modules/surgery/organs/internal/heart/heart_ethereal.dm index 8ad9301fe74..78ee55b0b28 100644 --- a/code/modules/surgery/organs/internal/heart/heart_ethereal.dm +++ b/code/modules/surgery/organs/internal/heart/heart_ethereal.dm @@ -1,6 +1,7 @@ /obj/item/organ/internal/heart/ethereal name = "crystal core" - icon_state = "ethereal_heart" //Welp. At least it's more unique in functionaliy. + icon_state = "ethereal_heart-on" + base_icon_state = "ethereal_heart" visual = TRUE //This is used by the ethereal species for color desc = "A crystal-like organ that functions similarly to a heart for Ethereals. It can revive its owner." @@ -18,6 +19,7 @@ /obj/item/organ/internal/heart/ethereal/Initialize(mapload) . = ..() add_atom_colour(ethereal_color, FIXED_COLOUR_PRIORITY) + update_appearance() /obj/item/organ/internal/heart/ethereal/Insert(mob/living/carbon/heart_owner, special = FALSE, drop_if_replaced = TRUE) . = ..() @@ -36,7 +38,7 @@ /obj/item/organ/internal/heart/ethereal/update_overlays() . = ..() - var/mutable_appearance/shine = mutable_appearance(icon, icon_state = "[icon_state]_shine") + var/mutable_appearance/shine = mutable_appearance(icon, icon_state = "[base_icon_state]_overlay-[beating ? "on" : "off"]") shine.appearance_flags = RESET_COLOR //No color on this, just pure white . += shine @@ -193,13 +195,13 @@ add_atom_colour(ethereal_heart.ethereal_color, FIXED_COLOUR_PRIORITY) crystal_heal_timer = addtimer(CALLBACK(src, PROC_REF(heal_ethereal)), CRYSTALIZE_HEAL_TIME, TIMER_STOPPABLE) set_light(4, 10, ethereal_heart.ethereal_color) - update_icon() + update_appearance(UPDATE_OVERLAYS) flick("ethereal_crystal_forming", src) addtimer(CALLBACK(src, PROC_REF(start_crystalization)), 1 SECONDS) /obj/structure/ethereal_crystal/proc/start_crystalization() being_built = FALSE - update_icon() + update_appearance(UPDATE_OVERLAYS) /obj/structure/ethereal_crystal/atom_destruction(damage_flag) playsound(get_turf(ethereal_heart.owner), 'sound/effects/ethereal_revive_fail.ogg', 100) diff --git a/icons/obj/medical/organs/organs.dmi b/icons/obj/medical/organs/organs.dmi index 94ba46568c92902b642a45af13df6fceb200d092..3feaf4a4ca8d04d911d9df404f2b56ae0b912d7b 100644 GIT binary patch delta 18707 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 Ef**?6e*gdg delta 18240 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