From b21c65055a5486e9dab022abc0c5c85d772cd251 Mon Sep 17 00:00:00 2001 From: kevinz000 <2003111+kevinz000@users.noreply.github.com> Date: Thu, 6 Feb 2020 00:42:05 -0700 Subject: [PATCH] Surgery fix package --- code/__DEFINES/reagents.dm | 4 +++- code/modules/mob/living/carbon/carbon.dm | 2 +- .../chemistry/reagents/medicine_reagents.dm | 17 ++++++++++++----- .../modules/research/designs/medical_designs.dm | 2 +- code/modules/research/techweb/all_nodes.dm | 8 ++++---- code/modules/surgery/surgery.dm | 6 +++--- 6 files changed, 24 insertions(+), 15 deletions(-) diff --git a/code/__DEFINES/reagents.dm b/code/__DEFINES/reagents.dm index b8cdeef6..586b3468 100644 --- a/code/__DEFINES/reagents.dm +++ b/code/__DEFINES/reagents.dm @@ -35,6 +35,8 @@ #define ADD_REAGENT 2 // reagent added #define REM_REAGENT 3 // reagent removed (may still exist) +#define THRESHOLD_UNHUSK 40 // health threshold for synthflesh/rezadone to unhusk someone + //reagent bitflags, used for altering how they works #define REAGENT_DEAD_PROCESS (1<<0) //calls on_mob_dead() if present in a dead body #define REAGENT_DONOTSPLIT (1<<1) //Do not split the chem at all during processing @@ -47,4 +49,4 @@ //Chemical reaction flags, for determining reaction specialties #define REACTION_CLEAR_IMPURE (1<<0) //Convert into impure/pure on reaction completion -#define REACTION_CLEAR_INVERSE (1<<1) //Convert into inverse on reaction completion when purity is low enough \ No newline at end of file +#define REACTION_CLEAR_INVERSE (1<<1) //Convert into inverse on reaction completion when purity is low enough diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 32f9ef73..33214a0f 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -561,7 +561,7 @@ health = round(maxHealth - getOxyLoss() - getToxLoss() - getCloneLoss() - total_burn - total_brute, DAMAGE_PRECISION) staminaloss = round(total_stamina, DAMAGE_PRECISION) update_stat() - if(((maxHealth - total_burn) < HEALTH_THRESHOLD_DEAD) && stat == DEAD ) + if(((maxHealth - total_burn) < HEALTH_THRESHOLD_DEAD*2) && stat == DEAD ) become_husk("burn") med_hud_set_health() if(stat == SOFT_CRIT) diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 1fd4498b..6cf4be4a 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -217,6 +217,14 @@ ..() . = 1 +/datum/reagent/medicine/rezadone/reaction_mob(mob/living/M, method=TOUCH, reac_volume) + . = ..() + if(iscarbon(M)) + var/mob/living/carbon/patient = M + if(reac_volume >= 5 && HAS_TRAIT_FROM(patient, TRAIT_HUSK, "burn") && patient.getFireLoss() < THRESHOLD_UNHUSK) //One carp yields 12u rezadone. + patient.cure_husk("burn") + patient.visible_message("[patient]'s body rapidly absorbs moisture from the enviroment, taking on a more healthy appearance.") + /datum/reagent/medicine/spaceacillin name = "Spaceacillin" description = "Spaceacillin will prevent a patient from conventionally spreading any diseases they are currently infected with." @@ -437,13 +445,12 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M) if(show_message) to_chat(M, "You feel your burns and bruises healing! It stings like hell!") SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "painful_medicine", /datum/mood_event/painful_medicine) + //Has to be at less than THRESHOLD_UNHUSK burn damage and have 100 synthflesh before unhusking. Corpses dont metabolize. + if(HAS_TRAIT_FROM(M, TRAIT_HUSK, "burn") && M.getFireLoss() < THRESHOLD_UNHUSK && M.reagents.has_reagent(/datum/reagent/medicine/synthflesh, 100)) + M.cure_husk("burn") + M.visible_message("Most of [M]'s burnt off or charred flesh has been restored.") ..() -/datum/reagent/medicine/synthflesh/overdose_start(mob/living/M) - metabolization_rate = 15 * REAGENTS_METABOLISM - if(M.getFireLoss() <= 20 && M.getBruteLoss() <= 20) - M.cure_husk() - /datum/reagent/medicine/charcoal name = "Charcoal" description = "Heals toxin damage as well as slowly removing any other chemicals the patient has in their bloodstream." diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm index e76ac3cf..9c4cecf8 100644 --- a/code/modules/research/designs/medical_designs.dm +++ b/code/modules/research/designs/medical_designs.dm @@ -808,7 +808,7 @@ /datum/design/surgery/healing/burn_upgrade_2 name = "Tend Wounds (Burn) Upgrade" - surgery = /datum/surgery/healing/brute/upgraded/femto + surgery = /datum/surgery/healing/burn/upgraded/femto id = "surgery_heal_burn_upgrade_femto" /datum/design/surgery/healing/combo diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index d2e374c3..17b30565 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -135,7 +135,7 @@ display_name = "Improved Wound-Tending Surgery" description = "Who would have known being more gentle with a hemostat decreases patient pain?" prereq_ids = list("biotech") - design_ids = list("surgery_heal_brute_upgrade","surgery_heal_burn_upgrade") + design_ids = list("surgery_heal_brute_upgrade", "surgery_heal_burn_upgrade") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1000) export_price = 1000 @@ -144,7 +144,7 @@ display_name = "Advanced Surgery" description = "When simple medicine doesn't cut it." prereq_ids = list("imp_wt_surgery") - design_ids = list("surgery_revival", "surgery_lobotomy", "surgery_heal_brute_upgrade_femto","surgery_heal_burn_upgrade_femto", "surgery_heal_combo", "surgery_toxinhealing", "organbox", "surgery_adv_dissection") + design_ids = list("surgery_revival", "surgery_lobotomy", "surgery_heal_brute_upgrade_femto", "surgery_heal_burn_upgrade_femto", "surgery_heal_combo", "surgery_toxinhealing", "organbox", "surgery_adv_dissection") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -153,7 +153,7 @@ display_name = "Experimental Surgery" description = "When evolution isn't fast enough." prereq_ids = list("adv_surgery") - design_ids = list("surgery_pacify","surgery_vein_thread","surgery_muscled_veins","surgery_nerve_splice","surgery_nerve_ground","surgery_ligament_hook","surgery_ligament_reinforcement","surgery_viral_bond", "surgery_exp_dissection", "surgery_heal_combo_upgrade") + design_ids = list("surgery_pacify", "surgery_vein_thread", "surgery_muscled_veins", "surgery_nerve_splice", "surgery_nerve_ground", "surgery_ligament_hook", "surgery_ligament_reinforcement", "surgery_viral_bond", "surgery_exp_dissection", "surgery_heal_combo_upgrade") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 5000) export_price = 5000 @@ -162,7 +162,7 @@ display_name = "Alien Surgery" description = "Abductors did nothing wrong." prereq_ids = list("exp_surgery", "alientech") - design_ids = list("surgery_brainwashing","surgery_zombie", "surgery_ext_dissection", "surgery_heal_combo_upgrade_femto") + design_ids = list("surgery_brainwashing", "surgery_zombie", "surgery_ext_dissection", "surgery_heal_combo_upgrade_femto") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 10000) export_price = 5000 diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm index eb424d49..12d697e8 100644 --- a/code/modules/surgery/surgery.dm +++ b/code/modules/surgery/surgery.dm @@ -42,7 +42,7 @@ if(replaced_by == /datum/surgery) return FALSE - if(HAS_TRAIT(user, TRAIT_SURGEON)) + if(HAS_TRAIT(user, TRAIT_SURGEON) || HAS_TRAIT(user.mind, TRAIT_SURGEON)) if(replaced_by) return FALSE else @@ -92,7 +92,7 @@ return TRUE if(iscyborg(user) && user.a_intent != INTENT_HARM) //to save asimov borgs a LOT of heartache return TRUE - if(tool.item_flags & SURGICAL_TOOL) //Just because you used the wrong tool it doesn't mean you meant to whack the patient with it + if(tool && tool.item_flags & SURGICAL_TOOL) //Just because you used the wrong tool it doesn't mean you meant to whack the patient with it to_chat(user, "This step requires a different tool!") return TRUE @@ -171,4 +171,4 @@ //RESOLVED ISSUES //"Todo" jobs that have been completed //combine hands/feet into the arms - Hands/feet were removed - RR -//surgeries (not steps) that can be initiated on any body part (corresponding with damage locations) - Call this one done, see possible_locs var - c0 \ No newline at end of file +//surgeries (not steps) that can be initiated on any body part (corresponding with damage locations) - Call this one done, see possible_locs var - c0