diff --git a/code/modules/reagents/chemistry/reagents/toxins.dm b/code/modules/reagents/chemistry/reagents/toxins.dm index 63d10ed7279..b383bc3e54a 100644 --- a/code/modules/reagents/chemistry/reagents/toxins.dm +++ b/code/modules/reagents/chemistry/reagents/toxins.dm @@ -47,13 +47,19 @@ taste_description = "slimes" taste_mult = 1.3 +/datum/reagent/slimejelly/reaction_mob(mob/living/M, method, volume, show_message) + var/mob/living/carbon/C = M + if(method != REAGENT_INGEST || !iscarbon(C) || !C.mind?.has_antag_datum(/datum/antagonist/vampire)) + return ..() + + M.set_nutrition(min(NUTRITION_LEVEL_WELL_FED, M.nutrition + 10)) + M.blood_volume = min(M.blood_volume + round(volume, 0.1), BLOOD_VOLUME_NORMAL) + M.absorb_blood(id) + /datum/reagent/slimejelly/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE var/mob/living/carbon/C = M if(iscarbon(C) && C.mind?.has_antag_datum(/datum/antagonist/vampire)) - M.set_nutrition(min(NUTRITION_LEVEL_WELL_FED, M.nutrition + 10)) - if(M.get_blood_id() != id) - M.blood_volume = min(M.blood_volume + REAGENTS_METABOLISM, BLOOD_VOLUME_NORMAL) return ..() | update_flags if(M.get_blood_id() != id) diff --git a/code/modules/surgery/organs/blood.dm b/code/modules/surgery/organs/blood.dm index 47afa15fe8b..56e4f87087b 100644 --- a/code/modules/surgery/organs/blood.dm +++ b/code/modules/surgery/organs/blood.dm @@ -365,11 +365,13 @@ O.off_floor = TRUE O.layer = BELOW_MOB_LAYER -/mob/living/proc/absorb_blood() +/mob/living/proc/absorb_blood(passed_id) // This merely deletes the blood reagent inside of the mob to look nice on health scans. // The update to .blood_volume happens in `/datum/reagent/proc/reaction_mob` var/id = get_blood_id() + if(passed_id) + id = passed_id if(id) - reagents.del_reagent(get_blood_id()) + reagents.del_reagent(id) #undef EXOTIC_BLEED_MULTIPLIER