From adcb876d0b5e4e3bbc7a35d5d266705520b67993 Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Sun, 13 Sep 2020 02:58:40 +0200 Subject: [PATCH] [MIRROR] Adds better feedback related to husks (#769) * Adds better feedback related to husks (#53599) Husks currently have basically zero ingame feedback other than the grey sprite. It should be abundantly obvious when somebody is a husk, given that it's such a huge physical change that it changes the sprite. This PR adds examine text to husks, and adds a message to the health scanner. The regular scanner will only tell you that they are a husk, the advanced scanner will tell you if they were husked by burns or by "extreme fluid loss" AKA lings (but burnt takes precedence so you can still burn your ling corpses to a crisp to help hide your tracks). The defib now also gives a message specifically for husks instead of a generic "tissue damage" message which normally means brute/burn damage. I also updated the description of sythflesh and rezadone to mention that they can restore burnt husks, and replaced some hardcoded "burn" with the BURN constant. * Adds better feedback related to husks Co-authored-by: msgerbs --- code/__DEFINES/reagents.dm | 5 ++++- code/game/objects/items/defib.dm | 4 +++- code/game/objects/items/devices/scanners.dm | 8 ++++++++ code/modules/mob/living/carbon/carbon.dm | 2 +- code/modules/mob/mob_helpers.dm | 2 ++ .../reagents/chemistry/reagents/cat2_medicine_reagents.dm | 6 +++--- .../reagents/chemistry/reagents/medicine_reagents.dm | 6 +++--- 7 files changed, 24 insertions(+), 9 deletions(-) diff --git a/code/__DEFINES/reagents.dm b/code/__DEFINES/reagents.dm index 70a5c5908f5..c273b2b2b86 100644 --- a/code/__DEFINES/reagents.dm +++ b/code/__DEFINES/reagents.dm @@ -36,7 +36,10 @@ #define CLEAR_REAGENTS 4 // all reagents were cleared #define MIMEDRINK_SILENCE_DURATION 30 //ends up being 60 seconds given 1 tick every 2 seconds -#define THRESHOLD_UNHUSK 50 //Health treshold for synthflesh and rezadone to unhusk someone +///Health threshold for synthflesh and rezadone to unhusk someone +#define UNHUSK_DAMAGE_THRESHOLD 50 +///Amount of synthflesh required to unhusk someone +#define SYNTHFLESH_UNHUSK_AMOUNT 100 //used by chem masters and pill presses #define PILL_STYLE_COUNT 22 //Update this if you add more pill icons or you die diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm index 971e06e1162..1c3c74d2fad 100644 --- a/code/game/objects/items/defib.dm +++ b/code/game/objects/items/defib.dm @@ -579,8 +579,10 @@ fail_reason = "Patient's heart is missing." if (DEFIB_FAIL_FAILING_HEART) fail_reason = "Patient's heart too damaged, replace or repair and try again." - if (DEFIB_FAIL_TISSUE_DAMAGE, DEFIB_FAIL_HUSK) + if (DEFIB_FAIL_TISSUE_DAMAGE) fail_reason = "Tissue damage too severe, repair and try again." + if (DEFIB_FAIL_HUSK) + fail_reason = "Patient's body is a mere husk, repair and try again." if (DEFIB_FAIL_FAILING_BRAIN) fail_reason = "Patient's brain is too damaged, repair and try again." if (DEFIB_FAIL_NO_INTELLIGENCE) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 2f3b6b5c367..5d34eb41ffd 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -169,6 +169,14 @@ GENE SCANNER render_list += "Analyzing results for [M]:\nOverall status: [mob_status]\n" + // Husk detection + if(advanced && HAS_TRAIT_FROM(M, TRAIT_HUSK, BURN)) + render_list += "Subject has been husked by severe burns.\n" + else if (advanced && HAS_TRAIT_FROM(M, TRAIT_HUSK, CHANGELING_DRAIN)) + render_list += "Subject has been husked by dessication.\n" + else if(HAS_TRAIT(M, TRAIT_HUSK)) + render_list += "Subject has been husked.\n" + // Damage descriptions if(brute_loss > 10) render_list += "[brute_loss > 50 ? "Severe" : "Minor"] tissue damage detected.\n" diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index b2a9cc45b91..032a4fcf25d 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -569,7 +569,7 @@ update_stat() update_mobility() if(((maxHealth - total_burn) < HEALTH_THRESHOLD_DEAD*2) && stat == DEAD ) - become_husk("burn") + become_husk(BURN) med_hud_set_health() diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 51220436520..cdd82fa196d 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -510,6 +510,8 @@ else if(HAS_TRAIT_FROM(src, TRAIT_DISSECTED,"Thorough Dissection")) dissectionmsg = " via Thorough Dissection" . += "This body has been dissected and analyzed[dissectionmsg].
" + if(HAS_TRAIT(src,TRAIT_HUSK)) + . += "This body has been reduced to a grotesque husk." /** * Get the list of keywords for policy config diff --git a/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm index d6344f0387f..24db8ceab05 100644 --- a/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/cat2_medicine_reagents.dm @@ -407,7 +407,7 @@ /*Suffix: Combo of healing, prob gonna get wack REAL fast*/ /datum/reagent/medicine/c2/synthflesh name = "Synthflesh" - description = "Heals brute and burn damage at the cost of toxicity (66% of damage healed). Touch application only." + description = "Heals brute and burn damage at the cost of toxicity (66% of damage healed). 100u or more can restore corpses husked by burns. Touch application only." reagent_state = LIQUID color = "#FFEBEB" @@ -429,8 +429,8 @@ if(show_message) to_chat(carbies, "You feel your burns and bruises healing! It stings like hell!") SEND_SIGNAL(carbies, COMSIG_ADD_MOOD_EVENT, "painful_medicine", /datum/mood_event/painful_medicine) - if(HAS_TRAIT_FROM(exposed_mob, TRAIT_HUSK, "burn") && carbies.getFireLoss() < THRESHOLD_UNHUSK && (carbies.reagents.get_reagent_amount(/datum/reagent/medicine/c2/synthflesh) + reac_volume >= 100)) - carbies.cure_husk("burn") + if(HAS_TRAIT_FROM(exposed_mob, TRAIT_HUSK, BURN) && carbies.getFireLoss() < UNHUSK_DAMAGE_THRESHOLD && (carbies.reagents.get_reagent_amount(/datum/reagent/medicine/c2/synthflesh) + reac_volume >= SYNTHFLESH_UNHUSK_AMOUNT)) + carbies.cure_husk(BURN) carbies.visible_message("A rubbery liquid coats [carbies]'s burns. [carbies] looks a lot healthier!") //we're avoiding using the phrases "burnt flesh" and "burnt skin" here because carbies could be a skeleton or a golem or something /******ORGAN HEALING******/ diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 2bef3c55ced..4a400c20c05 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -212,7 +212,7 @@ /datum/reagent/medicine/rezadone name = "Rezadone" - description = "A powder derived from fish toxin, Rezadone can effectively treat genetic damage as well as restoring minor wounds. Overdose will cause intense nausea and minor toxin damage." + description = "A powder derived from fish toxin, Rezadone can effectively treat genetic damage as well as restoring minor wounds and restoring corpses husked by burns. Overdose will cause intense nausea and minor toxin damage." reagent_state = SOLID color = "#669900" // rgb: 102, 153, 0 overdose_threshold = 30 @@ -238,8 +238,8 @@ return var/mob/living/carbon/patient = exposed_mob - if(reac_volume >= 5 && HAS_TRAIT_FROM(patient, TRAIT_HUSK, "burn") && patient.getFireLoss() < THRESHOLD_UNHUSK) //One carp yields 12u rezadone. - patient.cure_husk("burn") + if(reac_volume >= 5 && HAS_TRAIT_FROM(patient, TRAIT_HUSK, BURN) && patient.getFireLoss() < UNHUSK_DAMAGE_THRESHOLD) //One carp yields 12u rezadone. + patient.cure_husk(BURN) patient.visible_message("[patient]'s body rapidly absorbs moisture from the environment, taking on a more healthy appearance.") /datum/reagent/medicine/spaceacillin