Improves Bleeding Feedback + Misc Wound/Organ Decay Tweaks (+ Removes Teeth) (#56056)

This commit is contained in:
Ryll Ryll
2021-01-14 23:53:34 -08:00
committed by GitHub
parent 0736d4cfc7
commit 787bbeddbb
19 changed files with 238 additions and 86 deletions
@@ -1360,26 +1360,41 @@
color = "#bb2424"
metabolization_rate = 0.25 * REAGENTS_METABOLISM
overdose_threshold = 20
/// How much base clotting we do per bleeding wound, multiplied by the below number for each bleeding wound
var/clot_rate = 0.25
/// If we have multiple bleeding wounds, we count the number of bleeding wounds, then multiply the clot rate by this^(n) before applying it to each cut, so more cuts = less clotting per cut (though still more total clotting)
var/clot_coeff_per_wound = 0.75
/// The bloodiest wound that the patient has will have its blood_flow reduced by this much each tick
var/clot_rate = 0.3
/// While this reagent is in our bloodstream, we reduce all bleeding by this factor
var/passive_bleed_modifier = 0.7
/// For tracking when we tell the person we're no longer bleeding
var/was_working
/datum/reagent/medicine/coagulant/on_mob_metabolize(mob/living/M)
ADD_TRAIT(M, TRAIT_COAGULATING, /datum/reagent/medicine/coagulant)
return ..()
/datum/reagent/medicine/coagulant/on_mob_end_metabolize(mob/living/M)
REMOVE_TRAIT(M, TRAIT_COAGULATING, /datum/reagent/medicine/coagulant)
return ..()
/datum/reagent/medicine/coagulant/on_mob_life(mob/living/carbon/M)
. = ..()
if(!M.blood_volume || !M.all_wounds)
return
var/effective_clot_rate = clot_rate
var/datum/wound/bloodiest_wound
for(var/i in M.all_wounds)
var/datum/wound/iter_wound = i
if(iter_wound.blood_flow)
effective_clot_rate *= clot_coeff_per_wound
if(iter_wound.blood_flow > bloodiest_wound?.blood_flow)
bloodiest_wound = iter_wound
for(var/i in M.all_wounds)
var/datum/wound/iter_wound = i
iter_wound.blood_flow = max(0, iter_wound.blood_flow - effective_clot_rate)
if(bloodiest_wound)
if(!was_working)
to_chat(M, "<span class='green'>You can feel your flowing blood start thickening!</span>")
was_working = TRUE
bloodiest_wound.blood_flow = max(0, bloodiest_wound.blood_flow - clot_rate)
else if(was_working)
was_working = FALSE
/datum/reagent/medicine/coagulant/overdose_process(mob/living/M)
. = ..()
@@ -1402,13 +1417,30 @@
var/obj/item/organ/heart/our_heart = M.getorganslot(ORGAN_SLOT_HEART)
our_heart.applyOrganDamage(1)
/datum/reagent/medicine/coagulant/on_mob_metabolize(mob/living/M)
if(!ishuman(M))
return
var/mob/living/carbon/human/blood_boy = M
blood_boy.physiology?.bleed_mod *= passive_bleed_modifier
/datum/reagent/medicine/coagulant/on_mob_end_metabolize(mob/living/M)
if(was_working)
to_chat(M, "<span class='warning'>The medicine thickening your blood loses its effect!</span>")
if(!ishuman(M))
return
var/mob/living/carbon/human/blood_boy = M
blood_boy.physiology?.bleed_mod /= passive_bleed_modifier
// i googled "natural coagulant" and a couple of results came up for banana peels, so after precisely 30 more seconds of research, i now dub grinding banana peels good for your blood
/datum/reagent/medicine/coagulant/banana_peel
name = "Pulped Banana Peel"
description = "Ancient Clown Lore says that pulped banana peels are good for your blood, but are you really going to take medical advice from a clown about bananas?"
color = "#863333" // rgb: 175, 175, 0
color = "#50531a" // rgb: 175, 175, 0
taste_description = "horribly stringy, bitter pulp"
glass_name = "glass of banana peel pulp"
glass_desc = "Ancient Clown Lore says that pulped banana peels are good for your blood, but are you really going to take medical advice from a clown about bananas?"
metabolization_rate = REAGENTS_METABOLISM
clot_coeff_per_wound = 0.6
metabolization_rate = 0.5 * REAGENTS_METABOLISM
clot_rate = 0.2
passive_bleed_modifier = 0.8
@@ -2323,6 +2323,7 @@
color = "#E6E6DA"
taste_mult = 0
// "Second wind" reagent generated when someone suffers a wound. Epinephrine, adrenaline, and stimulants are all already taken so here we are
/datum/reagent/determination
name = "Determination"
description = "For when you need to push on a little more. Do NOT allow near plants."
@@ -787,6 +787,14 @@
metabolization_rate = 0.2 * REAGENTS_METABOLISM
toxpwr = 0
/datum/reagent/toxin/heparin/on_mob_metabolize(mob/living/M)
ADD_TRAIT(M, TRAIT_BLOODY_MESS, /datum/reagent/toxin/heparin)
return ..()
/datum/reagent/toxin/heparin/on_mob_end_metabolize(mob/living/M)
REMOVE_TRAIT(M, TRAIT_BLOODY_MESS, /datum/reagent/toxin/heparin)
return ..()
/datum/reagent/toxin/rotatium //Rotatium. Fucks up your rotation and is hilarious
name = "Rotatium"
description = "A constantly swirling, oddly colourful fluid. Causes the consumer's sense of direction and hand-eye coordination to become wild."