Merge pull request #14685 from Arturlang/fake_blood

Reworks blood regeneration into something a bit more tame
This commit is contained in:
silicons
2021-08-11 02:54:49 -07:00
committed by GitHub
24 changed files with 121 additions and 77 deletions
@@ -586,7 +586,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
if(AmBloodsucker(C))
disgust_bloodsucker(FALSE, 1) //Bloodsuckers get SOME blood from it, for style reasons.
if(C.blood_volume < (BLOOD_VOLUME_NORMAL*C.blood_ratio))
C.blood_volume = min((BLOOD_VOLUME_NORMAL*C.blood_ratio), C.blood_volume + 3) //Bloody Mary quickly restores blood loss.
C.adjust_integration_blood(3) //Bloody Mary quickly restores blood loss.
..()
/datum/reagent/consumable/ethanol/brave_bull
@@ -2593,7 +2593,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
alcohol_description = "sweet"
else
alcohol_description = "watery" //How the hell did you get negative boozepwr?
var/list/fruits = list()
if(names_in_order.len <= 3)
fruits = names_in_order
@@ -396,26 +396,34 @@
metabolization_rate = 0.5 * REAGENTS_METABOLISM
overdose_threshold = 60
taste_description = "sweetness and salt"
var/extra_regen = 0.25 // in addition to acting as temporary blood, also add this much to their actual blood per tick
var/last_added = 0
var/maximum_reachable = BLOOD_VOLUME_NORMAL - 10 //So that normal blood regeneration can continue with salglu active
var/extra_regen = 0.25 // in addition to acting as temporary blood, also add this much to their actual blood per tick
pH = 5.5
/datum/reagent/medicine/salglu_solution/on_mob_life(mob/living/carbon/M)
if((HAS_TRAIT(M, TRAIT_NOMARROW)))
return
if(last_added)
M.blood_volume -= last_added
last_added = 0
if(M.blood_volume < maximum_reachable) //Can only up to double your effective blood level.
var/amount_to_add = min(M.blood_volume, volume*5)
var/new_blood_level = min(M.blood_volume + amount_to_add, maximum_reachable)
last_added = new_blood_level - M.blood_volume
M.blood_volume = new_blood_level + extra_regen
/datum/reagent/medicine/salglu_solution/on_mob_life(mob/living/carbon/human/M)
if(prob(33))
M.adjustBruteLoss(-0.5*REM, 0)
M.adjustFireLoss(-0.5*REM, 0)
. = TRUE
if((HAS_TRAIT(M, TRAIT_NOMARROW)))
return ..()
if(last_added)
M.adjust_integration_blood(-last_added, TRUE)
last_added = 0
if(M.functional_blood() < maximum_reachable) //Can only up to double your effective blood level.
var/new_blood_level = min(volume * 5, maximum_reachable)
last_added = new_blood_level
M.adjust_integration_blood(new_blood_level + (extra_regen * REM))
if(prob(33))
M.adjustBruteLoss(-0.5*REM, 0)
M.adjustFireLoss(-0.5*REM, 0)
. = TRUE
..()
/datum/reagent/medicine/salglu_solution/on_mob_delete(mob/living/carbon/human/M)
if(last_added)
M.adjust_integration_blood(-last_added, TRUE)
..()
/datum/reagent/medicine/salglu_solution/overdose_process(mob/living/M)
@@ -1295,7 +1303,7 @@
M.adjustCloneLoss(-3*REM, FALSE)
M.adjustStaminaLoss(-25*REM,FALSE)
if(M.blood_volume < (BLOOD_VOLUME_NORMAL*M.blood_ratio))
M.blood_volume += 40 // blood fall out man bad
M.adjust_integration_blood(40) // blood fall out man bad
..()
. = 1
@@ -1316,7 +1324,7 @@
M.adjustCloneLoss(-1.25*REM, FALSE)
M.adjustStaminaLoss(-4*REM,FALSE)
if(M.blood_volume < (BLOOD_VOLUME_NORMAL*M.blood_ratio))
M.blood_volume += 3
M.adjust_integration_blood(3)
..()
. = 1
@@ -48,7 +48,7 @@
var/mob/living/carbon/C = L
var/blood_id = C.get_blood_id()
if((HAS_TRAIT(C, TRAIT_NOMARROW) || blood_id == /datum/reagent/blood || blood_id == /datum/reagent/blood/jellyblood) && (method == INJECT || (method == INGEST && C.dna && C.dna.species && (DRINKSBLOOD in C.dna.species.species_traits))))
C.blood_volume = min(C.blood_volume + round(reac_volume, 0.1), BLOOD_VOLUME_MAXIMUM * C.blood_ratio)
C.adjust_integration_blood(round(reac_volume, 0.1))
// we don't care about bloodtype here, we're just refilling the mob
if(reac_volume >= 10 && istype(L) && method != INJECT)
@@ -253,7 +253,7 @@
/datum/reagent/water/on_mob_life(mob/living/carbon/M)
. = ..()
if(M.blood_volume)
M.blood_volume += 0.1 // water is good for you!
M.adjust_integration_blood(0.1) // water is good for you!
/*
* Water reaction to turf
@@ -370,7 +370,7 @@
/datum/reagent/water/holywater/on_mob_life(mob/living/carbon/M)
if(M.blood_volume)
M.blood_volume += 0.1 // water is good for you!
M.adjust_integration_blood(0.1) // water is good for you!
if(!data)
data = list("misc" = 1)
data["misc"]++
@@ -456,7 +456,7 @@
M.adjustBruteLoss(-2, FALSE)
M.adjustFireLoss(-2, FALSE)
if(ishuman(M) && M.blood_volume < (BLOOD_VOLUME_NORMAL*M.blood_ratio))
M.blood_volume += 3
M.adjust_integration_blood(3)
else // Will deal about 90 damage when 50 units are thrown
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 3, 150)
M.adjustToxLoss(2, FALSE)
@@ -1146,7 +1146,7 @@
if((HAS_TRAIT(C, TRAIT_NOMARROW)))
return
if(C.blood_volume < (BLOOD_VOLUME_NORMAL*C.blood_ratio))
C.blood_volume += 0.25
C.adjust_integration_blood(0.25)
..()
/datum/reagent/iron/reaction_mob(mob/living/M, method=TOUCH, reac_volume)
@@ -2552,7 +2552,7 @@
M.adjustBruteLoss(-3, FALSE)
M.adjustFireLoss(-3, FALSE)
if(ishuman(M) && M.blood_volume < BLOOD_VOLUME_NORMAL)
M.blood_volume += 3
M.adjust_integration_blood(3)
else
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 3, 150)
M.adjustToxLoss(2, FALSE)