salglu works like normal now again and adds more sanity

This commit is contained in:
Artur
2021-07-29 23:55:27 +03:00
parent 2fec997e1f
commit 6b5bdae184
6 changed files with 43 additions and 33 deletions
@@ -144,7 +144,7 @@
owner.Stun(15)
owner.adjustToxLoss(-15, TRUE, TRUE)
owner.AddIntegrationBlood(min(BLOOD_VOLUME_NORMAL, owner.blood_volume + 20))
owner.AddIntegrationBlood(20)
if(owner.blood_volume < BLOOD_VOLUME_NORMAL)
keep_going = TRUE
+3 -3
View File
@@ -687,10 +687,10 @@
if(H.stat == DEAD)
to_chat(user,"<span class='warning'>Only a revive rune can bring back the dead!</span>")
return
if(H.blood_volume < (BLOOD_VOLUME_SAFE*H.blood_ratio))
if(H.functional_blood() < (BLOOD_VOLUME_SAFE*H.blood_ratio))
var/restore_blood = (BLOOD_VOLUME_SAFE*H.blood_ratio) - H.blood_volume
if(uses*2 < restore_blood)
H.blood_volume += uses*2
if(uses * 2 < restore_blood)
H.AddIntegrationBlood(uses * 2)
to_chat(user,"<span class='danger'>You use the last of your blood rites to restore what blood you could!</span>")
uses = 0
return ..()
+24 -24
View File
@@ -40,27 +40,28 @@
if(bodytemperature >= TCRYO && !(HAS_TRAIT(src, TRAIT_HUSK))) //cryosleep or husked people do not pump the blood.
if(integrating_blood > 0)
integrating_blood = max(integrating_blood - 1, 0)
//Blood regeneration if there is some space
if(blood_volume < BLOOD_VOLUME_NORMAL)
var/nutrition_ratio = 0
var/integrated_blood = max(integrating_blood - 1, 0)
integrating_blood = integrated_blood
if(blood_volume < BLOOD_VOLUME_MAXIMUM)
blood_volume ++
if(!HAS_TRAIT(src, TRAIT_NOHUNGER))
switch(nutrition)
if(0 to NUTRITION_LEVEL_STARVING)
nutrition_ratio = 0.2
if(NUTRITION_LEVEL_STARVING to NUTRITION_LEVEL_HUNGRY)
nutrition_ratio = 0.4
if(NUTRITION_LEVEL_HUNGRY to NUTRITION_LEVEL_FED)
nutrition_ratio = 0.6
if(NUTRITION_LEVEL_FED to NUTRITION_LEVEL_WELL_FED)
nutrition_ratio = 0.8
else
nutrition_ratio = 1
if(satiety > 80)
nutrition_ratio *= 1.25
adjust_nutrition(-nutrition_ratio * HUNGER_FACTOR)
blood_volume = min(BLOOD_VOLUME_NORMAL, blood_volume + 0.5 * nutrition_ratio)
if(blood_volume < BLOOD_VOLUME_NORMAL)
var/nutrition_ratio = 0
if(!HAS_TRAIT(src, TRAIT_NOHUNGER))
switch(nutrition)
if(0 to NUTRITION_LEVEL_STARVING)
nutrition_ratio = 0.2
if(NUTRITION_LEVEL_STARVING to NUTRITION_LEVEL_HUNGRY)
nutrition_ratio = 0.4
if(NUTRITION_LEVEL_HUNGRY to NUTRITION_LEVEL_FED)
nutrition_ratio = 0.6
if(NUTRITION_LEVEL_FED to NUTRITION_LEVEL_WELL_FED)
nutrition_ratio = 0.8
else
nutrition_ratio = 1
if(satiety > 80)
nutrition_ratio *= 1.25
adjust_nutrition(-nutrition_ratio * HUNGER_FACTOR)
blood_volume = min(BLOOD_VOLUME_NORMAL, blood_volume + 0.5 * nutrition_ratio)
//Effects of bloodloss
var/word = pick("dizzy","woozy","faint")
@@ -390,8 +391,7 @@
H.handle_blood()
/mob/living/proc/AddIntegrationBlood(value, force)
var/species_maxblood = BLOOD_VOLUME_NORMAL
if(isslimeperson(src) || isvampire(src))
species_maxblood = BLOOD_VOLUME_MAXIMUM
if(blood_volume + integrating_blood < species_maxblood || force)
if(value < 0 && integrating_blood < value) //Remove the normal blood of the carbon if we can't afford it with integrating_blood
blood_volume = min(blood_volume, value)
if(integrating_blood < blood_volume + BLOOD_VOLUME_NORMAL || force)
integrating_blood += value
+3
View File
@@ -1273,3 +1273,6 @@
var/mob/living/carbon/C = usr
if(I.can_give())
C.give(src)
/mob/living/carbon/proc/functional_blood()
return blood_volume + integrating_blood
@@ -182,3 +182,8 @@
destination.underwear = underwear
destination.undershirt = undershirt
destination.socks = socks
/mob/living/carbon/human/AddIntegrationBlood(value, force)
if(NOBLOOD in dna.species.species_traits) //Can't lose blood if your species doesn't have any
return
. = ..()
@@ -396,19 +396,21 @@
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
pH = 5.5
/datum/reagent/medicine/salglu_solution/on_mob_life(mob/living/carbon/M)
/datum/reagent/medicine/salglu_solution/on_mob_life(mob/living/carbon/human/M)
if((HAS_TRAIT(M, TRAIT_NOMARROW)))
return
if(last_added)
M.integrating_blood -= min(M.integrating_blood, last_added)
M.AddIntegrationBlood(-last_added)
last_added = 0
if(M.blood_volume < maximum_reachable) //Can only up to double your effective blood level.
last_added = volume * 5
M.AddIntegrationBlood(last_added)
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.AddIntegrationBlood(new_blood_level + (extra_regen * REM))
if(prob(33))
M.adjustBruteLoss(-0.5*REM, 0)
M.adjustFireLoss(-0.5*REM, 0)