makes salglu not deadly
This commit is contained in:
@@ -47,7 +47,7 @@ Bonus
|
||||
M.adjustOxyLoss(-7, 0)
|
||||
M.losebreath = max(0, M.losebreath - 4)
|
||||
if(regenerate_blood && M.blood_volume < (BLOOD_VOLUME_NORMAL * M.blood_ratio))
|
||||
M.AddIntegrationBlood(1)
|
||||
M.adjust_integration_blood(1)
|
||||
else
|
||||
if(prob(base_message_chance))
|
||||
to_chat(M, "<span class='notice'>[pick("Your lungs feel great.", "You realize you haven't been breathing.", "You don't feel the need to breathe.")]</span>")
|
||||
|
||||
@@ -426,20 +426,21 @@ GENETICS SCANNER
|
||||
if(ishuman(C))
|
||||
if(H.is_bleeding())
|
||||
msg += "<span class='danger'>Subject is bleeding!</span>\n"
|
||||
var/blood_percent = round((C.scan_blood_volume() / (BLOOD_VOLUME_NORMAL * C.blood_ratio))*100)
|
||||
var/blood_percent = round((C.scan_blood_volume() / (BLOOD_VOLUME_NORMAL * C.blood_ratio))*100)
|
||||
var/integrated_blood_percent = round((C.integrating_blood / (BLOOD_VOLUME_NORMAL * C.blood_ratio))*100)
|
||||
var/blood_type = C.dna.blood_type
|
||||
if(!(blood_typepath in GLOB.blood_reagent_types))
|
||||
var/datum/reagent/R = GLOB.chemical_reagents_list[blood_typepath]
|
||||
if(R)
|
||||
blood_type = R.name
|
||||
if(C.integrating_blood)
|
||||
msg += "<span class='info'>[C.integrating_blood] cl of blood is being integrated into their bloodstream</span>\n"
|
||||
if(C.scan_blood_volume() <= (BLOOD_VOLUME_SAFE*C.blood_ratio) && C.scan_blood_volume() > (BLOOD_VOLUME_OKAY*C.blood_ratio))
|
||||
msg += "<span class='danger'>LOW blood level [blood_percent] %, [C.scan_blood_volume()] cl,</span> <span class='info'>type: [blood_type]</span>\n"
|
||||
else if(C.scan_blood_volume() <= (BLOOD_VOLUME_OKAY*C.blood_ratio))
|
||||
msg += "<span class='danger'>CRITICAL blood level [blood_percent] %, [C.scan_blood_volume()] cl,</span> <span class='info'>type: [blood_type]</span>\n"
|
||||
|
||||
if((C.scan_blood_volume() + C.integrating_blood) <= (BLOOD_VOLUME_SAFE * C.blood_ratio) && (C.scan_blood_volume() + C.integrating_blood) > (BLOOD_VOLUME_OKAY*C.blood_ratio))
|
||||
msg += "<span class='danger'>LOW blood level [blood_percent] %, [C.scan_blood_volume()] cl[C.integrating_blood? ", with [integrated_blood_percent] % of it integrating, [C.integrating_blood] cl " : ""].</span> <span class='info'>type: [blood_type]</span>\n"
|
||||
else if((C.scan_blood_volume() + C.integrating_blood) <= (BLOOD_VOLUME_OKAY * C.blood_ratio))
|
||||
msg += "<span class='danger'>CRITICAL blood level [blood_percent] %, [C.scan_blood_volume()] cl[C.integrating_blood? ", with [integrated_blood_percent] % of it integrating, [C.integrating_blood] cl " : ""].</span> <span class='info'>type: [blood_type]</span>\n"
|
||||
else
|
||||
msg += "<span class='info'>Blood level [blood_percent] %, [C.scan_blood_volume()] cl, type: [blood_type]</span>\n"
|
||||
msg += "<span class='info'>Blood level [blood_percent] %, [C.scan_blood_volume()] cl[C.integrating_blood? ", with [integrated_blood_percent] % of it integrating, [C.integrating_blood] cl " : ""]. type: [blood_type]</span>\n"
|
||||
|
||||
|
||||
var/cyberimp_detect
|
||||
for(var/obj/item/organ/cyberimp/CI in C.internal_organs)
|
||||
|
||||
@@ -144,7 +144,7 @@
|
||||
owner.Stun(15)
|
||||
owner.adjustToxLoss(-15, TRUE, TRUE)
|
||||
|
||||
owner.AddIntegrationBlood(20)
|
||||
owner.adjust_integration_blood(20)
|
||||
if(owner.blood_volume < BLOOD_VOLUME_NORMAL)
|
||||
keep_going = TRUE
|
||||
|
||||
|
||||
@@ -690,7 +690,7 @@
|
||||
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.AddIntegrationBlood(uses * 2)
|
||||
H.adjust_integration_blood(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 ..()
|
||||
|
||||
@@ -219,7 +219,7 @@
|
||||
if(M.health < M.maxHealth)
|
||||
M.adjustHealth(-3)
|
||||
if(ishuman(L) && L.blood_volume < (BLOOD_VOLUME_NORMAL * L.blood_ratio))
|
||||
L.AddIntegrationBlood(1.0)
|
||||
L.adjust_integration_blood(1.0)
|
||||
CHECK_TICK
|
||||
|
||||
|
||||
|
||||
@@ -147,7 +147,7 @@
|
||||
|
||||
carbon_target.blood_volume -= 20
|
||||
if(carbon_user.blood_volume < BLOOD_VOLUME_MAXIMUM) //we dont want to explode after all
|
||||
carbon_user.AddIntegrationBlood(20)
|
||||
carbon_user.adjust_integration_blood(20)
|
||||
return
|
||||
|
||||
/obj/effect/proc_holder/spell/pointed/blood_siphon/can_target(atom/target, mob/user, silent)
|
||||
|
||||
@@ -390,8 +390,9 @@
|
||||
var/mob/living/carbon/human/H = src
|
||||
H.handle_blood()
|
||||
|
||||
/mob/living/proc/AddIntegrationBlood(value, 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
|
||||
/mob/living/proc/adjust_integration_blood(value, remove_actual_blood, force)
|
||||
if(integrating_blood + value < 0 && remove_actual_blood)
|
||||
blood_volume += value + integrating_blood
|
||||
blood_volume = max(blood_volume, 0)
|
||||
integrating_blood += value
|
||||
integrating_blood = clamp(integrating_blood, 0, force ? INFINITY : (BLOOD_VOLUME_MAXIMUM - (integrating_blood + blood_volume)))
|
||||
|
||||
@@ -85,7 +85,7 @@
|
||||
owner.adjustOxyLoss(-heal_amt)
|
||||
owner.adjustCloneLoss(-heal_amt)
|
||||
if(owner.blood_volume && (owner.blood_volume < BLOOD_VOLUME_NORMAL))
|
||||
owner.AddIntegrationBlood(5)
|
||||
owner.adjust_integration_blood(5)
|
||||
else
|
||||
owner.adjustPlasma(plasma_rate * 0.1)
|
||||
|
||||
|
||||
@@ -183,7 +183,7 @@
|
||||
destination.undershirt = undershirt
|
||||
destination.socks = socks
|
||||
|
||||
/mob/living/carbon/human/AddIntegrationBlood(value, force)
|
||||
/mob/living/carbon/human/adjust_integration_blood(value, force)
|
||||
if(NOBLOOD in dna.species.species_traits) //Can't lose blood if your species doesn't have any
|
||||
return
|
||||
. = ..()
|
||||
|
||||
@@ -1364,7 +1364,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
|
||||
|
||||
/datum/species/proc/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H)
|
||||
if(chem.type == exotic_blood && !istype(exotic_blood, /datum/reagent/blood))
|
||||
H.AddIntegrationBlood(round(chem.volume, 0.1))
|
||||
H.adjust_integration_blood(round(chem.volume, 0.1))
|
||||
H.reagents.del_reagent(chem.type)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
@@ -56,13 +56,13 @@
|
||||
if(H.stat == DEAD || HAS_TRAIT(H, TRAIT_NOMARROW)) //can't farm slime jelly from a dead slime/jelly person indefinitely, and no regeneration for bloodsuckers
|
||||
return
|
||||
if(!H.blood_volume)
|
||||
H.AddIntegrationBlood(5)
|
||||
H.adjust_integration_blood(5)
|
||||
H.adjustBruteLoss(5)
|
||||
to_chat(H, "<span class='danger'>You feel empty!</span>")
|
||||
|
||||
if(H.blood_volume < (BLOOD_VOLUME_NORMAL * H.blood_ratio))
|
||||
if(H.nutrition >= NUTRITION_LEVEL_STARVING)
|
||||
H.AddIntegrationBlood(3)
|
||||
H.adjust_integration_blood(3)
|
||||
H.nutrition -= 2.5
|
||||
if(H.blood_volume < (BLOOD_VOLUME_OKAY*H.blood_ratio))
|
||||
if(prob(5))
|
||||
@@ -82,7 +82,7 @@
|
||||
consumed_limb.drop_limb()
|
||||
to_chat(H, "<span class='userdanger'>Your [consumed_limb] is drawn back into your body, unable to maintain its shape!</span>")
|
||||
qdel(consumed_limb)
|
||||
H.AddIntegrationBlood(20)
|
||||
H.adjust_integration_blood(20)
|
||||
|
||||
////////////////////////////////////////////////////////SLIMEPEOPLE///////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -151,7 +151,7 @@
|
||||
if(prob(5))
|
||||
to_chat(H, "<span class='notice'>You feel very bloated!</span>")
|
||||
else if(H.nutrition >= NUTRITION_LEVEL_WELL_FED)
|
||||
H.AddIntegrationBlood(3)
|
||||
H.adjust_integration_blood(3)
|
||||
H.nutrition -= 2.5
|
||||
|
||||
..()
|
||||
|
||||
@@ -112,7 +112,7 @@
|
||||
var/stun_absorption = null //converted to a list of stun absorption sources this mob has when one is added
|
||||
|
||||
var/blood_volume = 0 //how much blood the mob has
|
||||
var/integrating_blood = 0 //this is the variable you want to affect if you want to give the mob blood, this will slowly turn into normal blood, preventing some cheesyness, use AddIntegrationBlood() instead of modifying directly
|
||||
var/integrating_blood = 0 //this is the variable you want to affect if you want to give the mob blood, this will slowly turn into normal blood, preventing some cheesyness, use adjust_integration_blood() instead of modifying directly
|
||||
var/blood_ratio = 1 //How much blood the mob needs, in terms of ratio (i.e 1.2 will require BLOOD_VOLUME_NORMAL of 672) DO NOT GO ABOVE 3.55 Well, actually you can but, then they can't get enough blood.
|
||||
var/obj/effect/proc_holder/ranged_ability //Any ranged ability the mob has, as a click override
|
||||
|
||||
|
||||
@@ -94,7 +94,7 @@
|
||||
L.SetUnconscious(0, FALSE)
|
||||
L.adjustOxyLoss(-50)// do CPR first
|
||||
if(L.blood_volume <= 500) //bandage them up and give em some blood if they're bleeding
|
||||
L.AddIntegrationBlood(30)
|
||||
L.adjust_integration_blood(30)
|
||||
L.bleedsuppress = 0
|
||||
if(L.getBruteLoss() >= 50)// first, did we beat them into crit? if so, heal that
|
||||
var/healing = min(L.getBruteLoss(), 120)
|
||||
|
||||
@@ -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.AddIntegrationBlood(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
|
||||
|
||||
@@ -402,19 +402,28 @@
|
||||
pH = 5.5
|
||||
|
||||
/datum/reagent/medicine/salglu_solution/on_mob_life(mob/living/carbon/human/M)
|
||||
if((HAS_TRAIT(M, TRAIT_NOMARROW)))
|
||||
return
|
||||
if(last_added)
|
||||
M.AddIntegrationBlood(-last_added)
|
||||
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.AddIntegrationBlood(new_blood_level + (extra_regen * REM))
|
||||
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)
|
||||
@@ -1294,7 +1303,7 @@
|
||||
M.adjustCloneLoss(-3*REM, FALSE)
|
||||
M.adjustStaminaLoss(-25*REM,FALSE)
|
||||
if(M.blood_volume < (BLOOD_VOLUME_NORMAL*M.blood_ratio))
|
||||
M.AddIntegrationBlood(40) // blood fall out man bad
|
||||
M.adjust_integration_blood(40) // blood fall out man bad
|
||||
..()
|
||||
. = 1
|
||||
|
||||
@@ -1315,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.AddIntegrationBlood(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.AddIntegrationBlood(round(reac_volume, 0.1))
|
||||
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.AddIntegrationBlood(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.AddIntegrationBlood(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.AddIntegrationBlood(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.AddIntegrationBlood(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.AddIntegrationBlood(3)
|
||||
M.adjust_integration_blood(3)
|
||||
else
|
||||
M.adjustOrganLoss(ORGAN_SLOT_BRAIN, 3, 150)
|
||||
M.adjustToxLoss(2, FALSE)
|
||||
|
||||
@@ -109,7 +109,7 @@
|
||||
/datum/nanite_program/blood_restoring/active_effect()
|
||||
if(iscarbon(host_mob))
|
||||
var/mob/living/carbon/C = host_mob
|
||||
C.AddIntegrationBlood(2)
|
||||
C.adjust_integration_blood(2)
|
||||
|
||||
/datum/nanite_program/repairing
|
||||
name = "Mechanical Repair"
|
||||
|
||||
@@ -322,7 +322,7 @@ Consuming extracts:
|
||||
playsound(get_turf(M), 'sound/effects/splat.ogg', 10, 1)
|
||||
if(iscarbon(M))
|
||||
var/mob/living/carbon/C = M
|
||||
C.AddIntegrationBlood(25) //Half a vampire drain.
|
||||
C.adjust_integration_blood(25) //Half a vampire drain.
|
||||
|
||||
/obj/item/slimecross/consuming/green
|
||||
colour = "green"
|
||||
|
||||
@@ -187,7 +187,7 @@
|
||||
switch(activation_type)
|
||||
if(SLIME_ACTIVATE_MINOR)
|
||||
user.adjust_nutrition(50)
|
||||
user.AddIntegrationBlood(50)
|
||||
user.adjust_integration_blood(50)
|
||||
to_chat(user, "<span class='notice'>You activate [src], and your body is refilled with fresh slime jelly!</span>")
|
||||
return 150
|
||||
|
||||
|
||||
@@ -533,7 +533,7 @@
|
||||
var/total_moles = breath.total_moles()
|
||||
var/pressure = breath.return_pressure()
|
||||
var/plasma_pp = PP(breath, GAS_PLASMA)
|
||||
owner.AddIntegrationBlood(0.2 * plasma_pp) // 10/s when breathing literally nothing but plasma, which will suffocate you.
|
||||
owner.adjust_integration_blood(0.2 * plasma_pp) // 10/s when breathing literally nothing but plasma, which will suffocate you.
|
||||
|
||||
/obj/item/organ/lungs/yamerol
|
||||
name = "Yamerol lungs"
|
||||
|
||||
@@ -226,7 +226,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
|
||||
M.adjustCloneLoss(-10, 0) //I don't want to make Rezadone obsolete.
|
||||
M.adjustBruteLoss(-25, 0)// Note that this takes a long time to apply and makes you fat and useless when it's in you, I don't think this small burst of healing will be useful considering how long it takes to get there.
|
||||
M.adjustFireLoss(-25, 0)
|
||||
M.AddIntegrationBlood(250)
|
||||
M.adjust_integration_blood(250)
|
||||
M.heal_bodypart_damage(1,1)
|
||||
M.action_cooldown_mod = 1
|
||||
if (M.nutrition < 1500)
|
||||
@@ -236,7 +236,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
|
||||
to_chat(M, "<span class='notice'>the cells fail to hold enough mass to generate a clone, instead diffusing into your system.</span>")
|
||||
M.adjustBruteLoss(-10, 0)
|
||||
M.adjustFireLoss(-10, 0)
|
||||
M.AddIntegrationBlood(100)
|
||||
M.adjust_integration_blood(100)
|
||||
M.action_cooldown_mod = 1
|
||||
if (M.nutrition < 1500)
|
||||
M.adjust_nutrition(500)
|
||||
@@ -309,7 +309,7 @@ IMPORTANT FACTORS TO CONSIDER WHILE BALANCING
|
||||
|
||||
/datum/reagent/fermi/SDGFheal/on_mob_life(mob/living/carbon/M)//Used to heal the clone after splitting, the clone spawns damaged. (i.e. insentivies players to make more than required, so their clone doesn't have to be treated)
|
||||
if(M.blood_volume < (BLOOD_VOLUME_NORMAL*M.blood_ratio))
|
||||
M.AddIntegrationBlood(10)
|
||||
M.adjust_integration_blood(10)
|
||||
M.adjustCloneLoss(-2, 0)
|
||||
M.setOrganLoss(ORGAN_SLOT_BRAIN, -1)
|
||||
M.adjust_nutrition(10)
|
||||
|
||||
Reference in New Issue
Block a user